在线预览文档(支持word、excel、ppt、pdf)+在线预览文档html版(转)

时间:2022-09-14 10:18:53

1.首先上网搜索一下有什么解决方案 (1).将文档转换为html,只支持支持office文档 (2).将文档转换为flash,实现类似百度文库的效果,除支持office文档外还支持pdf

  (1) a.首先添加引用:

using Microsoft.Office.Core;
using Word = Microsoft.Office.Interop.Word;

  b.其次编写文档转换的方法:

在线预览文档(支持word、excel、ppt、pdf)+在线预览文档html版(转)
 1     /// <summary>
2 /// word转成html
3 /// </summary>
4 /// <param name="path">要转换的文档的路径</param>
5 /// <param name="savePath">转换成的html的保存路径</param>
6 /// <param name="wordFileName">转换后html文件的名字</param>
7 private static void WordToHtml(string path, string savePath, string wordFileName)
8 {
9 Word.ApplicationClass word = new Word.ApplicationClass();
10 Type wordType = word.GetType();
11 Word.Documents docs = word.Documents;
12 Type docsType = docs.GetType();
13 Word.Document doc = (Word.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] {(object)path, true, true });
14 Type docType = doc.GetType();
15 string strSaveFileName = savePath + wordFileName + ".html";
16 object saveFileName = (object)strSaveFileName;
17 docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { saveFileName, Word.WdSaveFormat.wdFormatFilteredHTML });
18 docType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, doc, null);
19 wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null);
20 }
21 /// <summary>
22 /// excel 转换为html
23   /// </summary>
24   /// <param name="path">要转换的文档的路径</param>
25   /// <param name="savePath">转换成的html的保存路径</param>
26   /// <param name="wordFileName">转换后html文件的名字</param>
27 public static void ExcelToHtml(string path, string savePath, string wordFileName)
28 {
29 string str = string.Empty;
30 Microsoft.Office.Interop.Excel.Application repExcel = new Microsoft.Office.Interop.Excel.Application();
31 Microsoft.Office.Interop.Excel.Workbook workbook = null;
32 Microsoft.Office.Interop.Excel.Worksheet worksheet = null;
33 workbook = repExcel.Application.Workbooks.Open(path, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
34 worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];
35 object htmlFile = savePath + wordFileName + ".html";
36 object ofmt = Microsoft.Office.Interop.Excel.XlFileFormat.xlHtml;
37 workbook.SaveAs(htmlFile, ofmt, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
38 object osave = false;
39 workbook.Close(osave, Type.Missing, Type.Missing);
40 repExcel.Quit();
41 }
42 /// <summary>
43   /// ppt转换为html
44   /// </summary>
45   /// <param name="path">要转换的文档的路径</param>
46   /// <param name="savePath">转换成的html的保存路径</param>
47   /// <param name="wordFileName">转换后html文件的名字</param>
48 public static void PPTToHtml(string path, string savePath, string wordFileName)
49 {
50 Microsoft.Office.Interop.PowerPoint.Application ppApp = new Microsoft.Office.Interop.PowerPoint.Application();
51 string strSourceFile = path;
52 string strDestinationFile = savePath + wordFileName + ".html";
53 Microsoft.Office.Interop.PowerPoint.Presentation prsPres = ppApp.Presentations.Open(strSourceFile, Microsoft.Office.Core.MsoTriState.msoTrue, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoFalse);
54 prsPres.SaveAs(strDestinationFile, Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsHTML, MsoTriState.msoTrue);
55 prsPres.Close();
56 ppApp.Quit();
57 }
在线预览文档(支持word、excel、ppt、pdf)+在线预览文档html版(转)

  c.接下来就是调用方法:WordToHtml(string path, string savePath, string wordFileName);ExcelToHtml(string path, string savePath, string wordFileName);PPTToHtml(string path, string savePath, string wordFileName)实现相应文档的转换

  然后就可以看见效果了

WORD

在线预览文档(支持word、excel、ppt、pdf)+在线预览文档html版(转)

PPT

在线预览文档(支持word、excel、ppt、pdf)+在线预览文档html版(转)

大家看一下这样的效果确实感觉挺丑的,特别是word,excel格式都没有了,这样的效果是难以满足要求的,那接下来我们就学习第二种方案。。。。

  (2).在网上搜索如何和将office文档的pdf文档转换为flash,实现在线预览,你会发现有好几种解决方案

    a.使用flashpaper将需要的文档通过简单的设置转换为SWF格式的Flash,扩展阅读:http://baike.baidu.com/view/917746.htm,不过由于我的电脑室win7,而flashpaper又不支持win7,所以只好

    放弃此种方案。

    b.在网上发现可以使用swftools(http://www.swftools.org/谢天谢地啊,它支持win7)将pdf格式的文件转换为flash,但是不能讲office文档转换为flash,那怎么办呢,难道这种方法又不行,可是仔

    细想一下如果我们能将office文档先转换为pdf文件不就解决问题了吗,突然之间隐隐约约觉得使用office软件就可实现这一功能,于是打开word看一下究竟

    在线预览文档(支持word、excel、ppt、pdf)+在线预览文档html版(转)哈哈果然有,不过要先装一个插件                  在线预览文档(支持word、excel、ppt、pdf)+在线预览文档html版(转)

    一切准备工作结束以后我们就可以进行编码了

    c.首先说一下swftools使用:在命令行中运行pdf2swf src.pdf des.swf一般能满足需求。然后就行主要的代码的编写(即将office文档转换为pdf文档)

    编写Office2Pdf.cs类

在线预览文档(支持word、excel、ppt、pdf)+在线预览文档html版(转)
  1 using System;
2 using System.Data;
3 using System.Configuration;
4 using System.Web;
5 using System.Web.Security;
6 using System.Web.UI;
7 using System.Web.UI.WebControls;
8 using System.Web.UI.WebControls.WebParts;
9 using System.Web.UI.HtmlControls;
10 using Word = Microsoft.Office.Interop.Word;
11 using Excel = Microsoft.Office.Interop.Excel;
12 using PowerPoint = Microsoft.Office.Interop.PowerPoint;
13 using Microsoft.Office.Core;
14
15 /// <summary>
16 /// Office2Pdf 将Office文档转化为pdf
17 /// </summary>
18 public class Office2Pdf
19 {
20 public Office2Pdf()
21 {
22 //
23 // TODO: 在此处添加构造函数逻辑
24 //
25 }
26 /// <summary>
27 /// Word转换成pdf
28 /// </summary>
29 /// <param name="sourcePath">源文件路径</param>
30 /// <param name="targetPath">目标文件路径</param>
31 /// <returns>true=转换成功</returns>
32 public bool DOCConvertToPDF(string sourcePath, string targetPath)
33 {
34 bool result = false;
35 Word.WdExportFormat exportFormat = Word.WdExportFormat.wdExportFormatPDF;
36 object paramMissing = Type.Missing;
37 Word.ApplicationClass wordApplication = new Word.ApplicationClass();
38 Word.Document wordDocument = null;
39 try
40 {
41 object paramSourceDocPath = sourcePath;
42 string paramExportFilePath = targetPath;
43 Word.WdExportFormat paramExportFormat = exportFormat;
44 bool paramOpenAfterExport = false;
45 Word.WdExportOptimizeFor paramExportOptimizeFor = Word.WdExportOptimizeFor.wdExportOptimizeForPrint;
46 Word.WdExportRange paramExportRange = Word.WdExportRange.wdExportAllDocument;
47 int paramStartPage = 0;
48 int paramEndPage = 0;
49 Word.WdExportItem paramExportItem = Word.WdExportItem.wdExportDocumentContent;
50 bool paramIncludeDocProps = true;
51 bool paramKeepIRM = true;
52 Word.WdExportCreateBookmarks paramCreateBookmarks = Word.WdExportCreateBookmarks.wdExportCreateWordBookmarks;
53 bool paramDocStructureTags = true;
54 bool paramBitmapMissingFonts = true;
55 bool paramUseISO19005_1 = false;
56 wordDocument = wordApplication.Documents.Open(
57 ref paramSourceDocPath, ref paramMissing, ref paramMissing,
58 ref paramMissing, ref paramMissing, ref paramMissing,
59 ref paramMissing, ref paramMissing, ref paramMissing,
60 ref paramMissing, ref paramMissing, ref paramMissing,
61 ref paramMissing, ref paramMissing, ref paramMissing,
62 ref paramMissing);
63 if (wordDocument != null)
64 wordDocument.ExportAsFixedFormat(paramExportFilePath,
65 paramExportFormat, paramOpenAfterExport,
66 paramExportOptimizeFor, paramExportRange, paramStartPage,
67 paramEndPage, paramExportItem, paramIncludeDocProps,
68 paramKeepIRM, paramCreateBookmarks, paramDocStructureTags,
69 paramBitmapMissingFonts, paramUseISO19005_1,
70 ref paramMissing);
71 result = true;
72 }
73 catch
74 {
75 result = false;
76 }
77 finally
78 {
79 if (wordDocument != null)
80 {
81 wordDocument.Close(ref paramMissing, ref paramMissing, ref paramMissing);
82 wordDocument = null;
83 }
84 if (wordApplication != null)
85 {
86 wordApplication.Quit(ref paramMissing, ref paramMissing, ref paramMissing);
87 wordApplication = null;
88 }
89 GC.Collect();
90 GC.WaitForPendingFinalizers();
91 GC.Collect();
92 GC.WaitForPendingFinalizers();
93 }
94 return result;
95 }
96
97 /// <summary>
98 /// 把Excel文件转换成PDF格式文件
99 /// </summary>
100 /// <param name="sourcePath">源文件路径</param>
101 /// <param name="targetPath">目标文件路径</param>
102 /// <returns>true=转换成功</returns>
103 public bool XLSConvertToPDF(string sourcePath, string targetPath)
104 {
105 bool result = false;
106 Excel.XlFixedFormatType targetType = Excel.XlFixedFormatType.xlTypePDF;
107 object missing = Type.Missing;
108 Excel.ApplicationClass application = null;
109 Excel.Workbook workBook = null;
110 try
111 {
112 application = new Excel.ApplicationClass();
113 object target = targetPath;
114 object type = targetType;
115 workBook = application.Workbooks.Open(sourcePath, missing, missing, missing, missing, missing,
116 missing, missing, missing, missing, missing, missing, missing, missing, missing);
117 workBook.ExportAsFixedFormat(targetType, target, Excel.XlFixedFormatQuality.xlQualityStandard, true, false, missing, missing, missing, missing);
118 result = true;
119 }
120 catch
121 {
122 result = false;
123 }
124 finally
125 {
126 if (workBook != null)
127 {
128 workBook.Close(true, missing, missing);
129 workBook = null;
130 }
131 if (application != null)
132 {
133 application.Quit();
134 application = null;
135 }
136 GC.Collect();
137 GC.WaitForPendingFinalizers();
138 GC.Collect();
139 GC.WaitForPendingFinalizers();
140 }
141 return result;
142 }
143 ///<summary>
144 /// 把PowerPoint文件转换成PDF格式文件
145 ///</summary>
146 ///<param name="sourcePath">源文件路径</param>
147 ///<param name="targetPath">目标文件路径</param>
148 ///<returns>true=转换成功</returns>
149 public bool PPTConvertToPDF(string sourcePath, string targetPath)
150 {
151 bool result;
152 PowerPoint.PpSaveAsFileType targetFileType = PowerPoint.PpSaveAsFileType.ppSaveAsPDF;
153 object missing = Type.Missing;
154 PowerPoint.ApplicationClass application = null;
155 PowerPoint.Presentation persentation = null;
156 try
157 {
158 application = new PowerPoint.ApplicationClass();
159 persentation = application.Presentations.Open(sourcePath, MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse); persentation.SaveAs(targetPath, targetFileType, Microsoft.Office.Core.MsoTriState.msoTrue);
160 result = true;
161 }
162 catch
163 {
164 result = false;
165 }
166 finally
167 {
168 if (persentation != null)
169 {
170 persentation.Close();
171 persentation = null;
172 }
173 if (application != null)
174 {
175 application.Quit();
176 application = null;
177 }
178 GC.Collect();
179 GC.WaitForPendingFinalizers();
180 GC.Collect();
181 GC.WaitForPendingFinalizers();
182 }
183 return result;
184 }
185 }
在线预览文档(支持word、excel、ppt、pdf)+在线预览文档html版(转)

    然后编写Pdf2Swf.cs类调用命令行将pdf转换为swf格式的flash

在线预览文档(支持word、excel、ppt、pdf)+在线预览文档html版(转)
 1 using System;
2 using System.Data;
3 using System.Configuration;
4 using System.Web;
5 using System.Web.Security;
6 using System.Web.UI;
7 using System.Web.UI.WebControls;
8 using System.Web.UI.WebControls.WebParts;
9 using System.Web.UI.HtmlControls;
10 using System.Diagnostics;
11 using System.IO;
12
13 /// <summary>
14 /// Pdf2Swf 将pdf转化为swf
15 /// </summary>
16 public class Pdf2Swf
17 {
18 public Pdf2Swf()
19 {
20 //
21 // TODO: 在此处添加构造函数逻辑
22 //
23 }
24 public void PDFConvertToSWF(string sourcePath, string targetPath)
25 {
26 Process p = new Process();
27 p.StartInfo.FileName = "cmd.exe ";
28 p.StartInfo.UseShellExecute = false;
29 p.StartInfo.RedirectStandardInput = true;
30 p.StartInfo.RedirectStandardOutput = true;
31 p.StartInfo.RedirectStandardError = true;
32 p.StartInfo.CreateNoWindow = true;
33 p.Start();
34 string cmd = "pdf2swf.exe" + " " + sourcePath + " -o " + targetPath;
35 p.StandardInput.WriteLine(cmd);
36 p.Close();
37 }
38 }
在线预览文档(支持word、excel、ppt、pdf)+在线预览文档html版(转)

  然后只需要调用这两个类就可以实现将office转换为pdf再转换为flash的功能了

 (3)最后就是实现flash的显示:这时我们还要借助工具来实现功能,那就是flexpaper,首先在网上下载所需要的flash文件、javascript文件,然后编写html代码:

效果就这样:

在线预览文档(支持word、excel、ppt、pdf)+在线预览文档html版(转)还不错吧,上面的工具栏也可以实现各种功能

至此为止,所有工作全部结束,大家只需要将这些代码进行整合,配合数据库使用,编写管理后台,就可以实现百度文库的效果,甚至可以投入实际使用。

在线预览文档(支持word、excel、ppt、pdf)+在线预览文档html版(转)的更多相关文章

  1. ASP&period;NET Core2集成Office Online Server(OWAS)实现办公文档的在线预览与编辑(支持word&bsol;excel&bsol;ppt&bsol;pdf等格式)

    Office Online Server是微软开发的一套基于Office实现在线文档预览编辑的技术框架(支持当前主流的浏览器,且浏览器上无需安装任何插件,支持word.excel.ppt.pdf等文档 ...

  2. &lbrack;转发&rsqb;ASP&period;NET Core2集成Office Online Server(OWAS)实现办公文档的在线预览与编辑(支持word&bsol;excel&bsol;ppt&bsol;pdf等格式)

    转载自:https://www.cnblogs.com/Andre/p/9549874.html Office Online Server是微软开发的一套基于Office实现在线文档预览编辑的技术框架 ...

  3. Atitit&period;office&&num;160&semi;word&&num;160&semi;&&num;160&semi;excel&&num;160&semi;&&num;160&semi;ppt&&num;160&semi;pdf&&num;160&semi;的web在线预览方案与html转换方案&&num;160&semi;attilax&&num;160&semi;总结

    Atitit.office word  excel  ppt pdf 的web在线预览方案与html转换方案 attilax 总结 1. office word  excel pdf 的web预览要求 ...

  4. 在线文档转换API word&comma;excel&comma;ppt等在线文件转pdf、png

    在线文档转换API提供word,excel,ppt等在线文件转pdf.png等,文档:https://www.juhe.cn/docs/api/id/259 接口地址:http://v.juhe.cn ...

  5. 微信小程序云开发-云存储-下载并打开文件文件(word&sol;excel&sol;ppt&sol;pdf)

    一.wxml文件 1.写文本框,用来获取文件链接. 2.按钮,点击下载文件 <!-- 下载文件(word/excel/ppt/pdf等) --> <view class=" ...

  6. 微信小程序云开发-云存储-上传文件(word&sol;excel&sol;ppt&sol;pdf)到云存储

    说明 word/excel/ppt/pdf是从客户端会话选择文件.使用chooseMessageFile中选择文件. 一.wxml文件 上传按钮,绑定chooseFile <!--上传文件(wo ...

  7. uploadify 下载组件使用技巧和在线预览 word&comma;excel&comma;ppt&comma;pdf的方案

    http://www.cnblogs.com/wolf-sun/p/3565184.html uploadify 上传工具的使用技巧 http://www.cnblogs.com/wolf-sun/p ...

  8. lucent检索技术之创建索引:使用POI读取txt&sol;word&sol;excel&sol;ppt&sol;pdf内容

    在使用lucent检索文档时,必须先为各文档创建索引.索引的创建即读出文档信息(如文档名称.上传时间.文档内容等),然后再经过分词建索引写入到索引文件里.这里主要是总结下读取各类文档内容这一步. 一. ...

  9. 关于在线预览word&comma;excel&comma;ppt&comma;pdf的需求处理方法。

    参考文档:http://www.cnblogs.com/wolf-sun/p/3574278.html 我选用的方案:先用office com组件生成pdf,然后使用pdf.js在线预览pdf文档.在 ...

  10. 微信小程序云开发-云存储-上传、下载、打开文件文件(word&sol;excel&sol;ppt&sol;pdf)一步到位

    一.wxml文件 <!-- 上传.下载.打开文件一步执行 --> <view class="handle"> <button bindtap=&quo ...

随机推荐

  1. linux设备驱动归纳总结(三):3&period;设备驱动面向对象思想和lseek的实现【转】

    本文转自自:http://blog.chinaunix.net/uid-25014876-id-59418.html linux设备驱动归纳总结(三):3.设备驱动面向对象思想和lseek的实现 一. ...

  2. 表单input按钮在各浏览器之间的兼容性

    从网上看了这篇关于表单input按钮的浏览器兼容性问题,总结的还不错,所以copy下来学习下. input按钮在各个浏览器之间的兼容性问题,看下边这段代码: input.item { backgrou ...

  3. Failed to initialize monitor Thread&colon; Unable to establish loopback connection解决方法

    原因一: android中出现该异常的原因,是pid产生了冲突,将服务中的windows Firewall 服务停用就行了 原因二: http://*.com/question ...

  4. thymeleaf中的Literals

    Literals即为文字 一.Text literals:文本文字 文本文字只是字符串指定的单引号之间.他们可以包含任何字符,但你应避免任何单引号里面\ ' <p> Now you are ...

  5. Mongodb DB shell数据操作

    shell命令操作语法和JavaScript很类似,其实控制台底层的查询语句都是用JavaScript脚本完成操作的. Ø 数据库 1.Help查看命令提示 help db.help(); db.yo ...

  6. 如果在Xcode6中创建空工程&comma; 删除冗余信息

    http://*.com/questions/25783282/how-to-create-an-empty-application-in-xcode-6-without-st ...

  7. 算法---高速分拣&lpar;quick sort&rpar;

    在前面的排序中所描述的算法.最快的排序算法是归并排序,但是有一个缺陷合并排序排序过程的需求O(N)额外的空间.本文介绍了高速的排序算法到位排序算法,所需的复杂性的额外空间O(1). 算法介绍:高速排序 ...

  8. python之路&lpar;九&rpar;-函数装饰器

    装饰器 某公司的基础业务平台如下: def f1(): print('这是f1业务平台') def f2(): print('这是f2业务平台') def f3(): print('这是f3业务平台' ...

  9. 音视频编解码——RGB与YUV格式转换

    一.RGB模型与YUV模型 1.RGB模型 我们知道物理三基色分别是红(Red).绿(Green).蓝(Blue).现代的显示器技术就是通过组合不同强度的红绿蓝三原色,来达成几乎任何一种可见光的颜色. ...

  10. AspxGridView点滴

    1:页码设置 1>: <SettingsPager Summary-Text="当前第 {0} 页 总共 {1} 页 ({2} 条记录)"></Settin ...