上篇文章已经介绍了office文件的上传,这次来简单介绍一下Office文件的预览。
实现如下:
**1、工具准备**
Pdf2swf:用于把PDF格式文件转换为swf文件
Flexpaper:flash播放器,可播放一帧一帧的flash
**2、添加引用**
在项目中添加引用:选择COM里面Microsoft Office 15.0 object Library和Microsoft Word 15.0 object Library。引用里就会自动添加Microsoft.Office.Interop.Word引用
注意*****报错*****
类型“Microsoft.Office.Interop.Word.ApplicationClass"未定义构造函数。无法嵌入互操作类型“Microsoft.Office.Interop.Word.ApplicationClass”。请改用适用的接口。
******解决******
解决方案资源管理器 -> 引用 -> "Microsoft.Office.Interop.Word" -> 右键选择属性 -> 嵌入互操作类型的值改为"false"即可。
**3、实现代码**
<script src="../../Scripts/MyScript/flexpaper_flash.js"></script>
<div id="dlgPreview" closed="true" class="easyui-dialog" style="width: 750px; height: 750px;padding-top: 30px;padding-bottom: 30px;padding-left: 25px;"
buttons="#dlg-buttons" title ="添加">
<form id="PreviewHomeWork" method="post" > @*method="post" action="/TeaQueryHomework/AddHomeWork" *@
@*添加按钮弹出框*@
<a id="HomeworkBack" class="easyui-linkbutton l-btn" data-options="plain:true,iconCls:‘icon-back‘" style="margin-left :80px;" href="#" onclick="HomeworkBack()">
<span >返回</span>
</a>
<div style="position: absolute; left: 60px; top: 100px;">
<a id="viewerPlaceHolder" style="width: 650px; height: 600px; display: block;"></a>
</div>
</form>
</div>
Controller:
WordToPDF:
/// <summary>
/// 将office文件转化为pdf文件,文件名称不变
/// </summary>
/// <param name="pdf2swfPath">pdf2swfPath工具所在路径</param>
/// <param name="OfficePath">office存储路径</param>
/// <param name="OfficeName">office文件名称</param>
/// <param name="destPath">pdf存储路径</param>
/// <returns>返回生成pdf的文件名,无效则返回空</returns>
private string OfficeToPdf(string OfficePath, string OfficeName, string destPath)
{
string fullPathName = OfficePath + OfficeName;//包含 路径 的全称
string fileNameWithoutEx = System.IO.Path.GetFileNameWithoutExtension(OfficeName);//不包含路径,不包含扩展名
string extendName = System.IO.Path.GetExtension(OfficeName).ToLower();//文件扩展名
string saveName = destPath + fileNameWithoutEx + ".pdf";
string returnValue = fileNameWithoutEx + ".pdf";
Microsoft.Office.Interop.Word.WdExportFormat exportFormat = Microsoft.Office.Interop.Word.WdExportFormat.wdExportFormatPDF;
Microsoft.Office.Interop.Word.ApplicationClass application = null;
Microsoft.Office.Interop.Word.Document document = null;
try
{
application = new Microsoft.Office.Interop.Word.ApplicationClass();
application.Visible = false;
document = application.Documents.Open(fullPathName);
document.SaveAs();
document.ExportAsFixedFormat(saveName, exportFormat);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
finally
{
if (document != null)
{
document.Close();
document = null;
}
if (application != null)
{
application.Quit();
application = null;
}
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
}
return returnValue;
}
PDFToswf
/// <summary>
/// 将pdf文件转化为swf文件,文件名称不变
/// </summary>
/// <param name="pdf2swfPath">pdf2swfPath工具所在路径</param>
/// <param name="PdfPath">pdf存储路径</param>
/// <param name="PdfName">pdf文件名称</param>
/// <param name="destPath">swf存储路径</param>
/// <returns></returns>
private string PdfToSwf(string pdf2swfPath, string PdfPath, string PdfName, string destPath)
{
string fullPathName = PdfPath + PdfName;//包含 路径 的全称
string fileNameWithoutEx = System.IO.Path.GetFileNameWithoutExtension(PdfName);//不包含路径,不包含扩展名
string extendName = System.IO.Path.GetExtension(PdfName).ToLower();//文件扩展名
string saveName = destPath + fileNameWithoutEx + ".swf";
string returnValue = fileNameWithoutEx + ".swf"; ;
if (extendName != ".pdf")
{
returnValue = "";
}
else
{
Process pc = new Process();
string cmd = pdf2swfPath;
string args = " -t " + fullPathName + " -s flashversion=9 -o " + saveName;
try
{
ProcessStartInfo psi = new ProcessStartInfo(cmd, args);
psi.WindowStyle = ProcessWindowStyle.Hidden;
pc.StartInfo = psi;
pc.Start();
pc.WaitForExit();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
pc.Close();
pc.Dispose();
}
}
return returnValue;
}
var target = "../../Content/TeaFile/SWF/成绩管理.swf";
var fp = new FlexPaperViewer(
‘../../FlexPaper/FlexPaperViewer‘,
‘viewerPlaceHolder‘, {
config: {
//SwfFile: escape($("#file").val()), //
SwfFile: escape(target),
Scale: 0.6,
ZoomTransition: ‘easeOut‘,
ZoomTime: 0.5,
ZoomInterval: 0.2,
FitPageOnLoad: true,
FitWidthOnLoad: false,
PrintEnabled: true,
FullScreenAsMaxWindow: false,
ProgressiveLoading: false,
MinZoomSize: 0.2,
MaxZoomSize: 5,
SearchMatchAll: false,
InitViewMode: ‘Portrait‘,
ViewModeToolsVisible: true,
ZoomToolsVisible: true,
NavToolsVisible: true,
CursorToolsVisible: true,
SearchToolsVisible: true,
localeChain: ‘en_US‘
}
});
预览效果图:
至此为止,Office的上传和预览就完成了。如果发现更好的方法,欢迎大家交流、批评、指正。
原文地址:http://blog.csdn.net/u010924897/article/details/46241647