程序员在开发项目时,可能有时需要将项目中上传的文件进行转换,如将Word文件转换为PDF文件。要实现这一功能,可能有些人根本就毫无头绪或者是实现方法很复杂、不容易理解而且效率低,但若是通过PageOfficeCtrl控件和PDFCtrl控件,则和容易就能实现这一转换。
下面我就来和大家分享一下,通过这两个控件实现文档转换的一个示例。
第一步:请先安装PageOffice的服务器端的安装程序,之后在你的网站中根目录下添加pageoffice文件夹(在www.zhuozhengsoft.com网站的“下载中心”中可下载相应的压缩包,解压之后直接将PageOffice实例代码里的pageoffice文件夹拷贝到根目录下就可以了)。
第二步:在网站中添加文件夹存放word模板文件和转后的PDF文件,我习惯命名为“doc”,将要转换的文件“template.doc”拷贝到该文件夹下。
第三步:在网站中创建动态页面WordToPDF.aspx。在工具箱中拖动一个PageOfficeCtrl控件到前台页面上(PageOfficeCtrl控件位于工具箱最下方)。然后在后台添加代码设置PageOffice的服务器页面、保存页面、打开Word文件和添加自定义按钮,部分代码如下:
//设置服务器页面
PageOfficeCtrl1.ServerPage = "pageoffice/server.aspx";
//设置保存页
PageOfficeCtrl1.SaveFilePage = "SaveFile.aspx";
//添加自定义按钮
PageOfficeCtrl1.AddCustomToolButton("保存", "Save()", 1);
PageOfficeCtrl1.AddCustomToolButton("另存为PDF文件", "SaveAsPDF()", 1);
string fileName = "template.doc";
//定义将要转换的PDF文件的名称
pdfName = fileName.Substring(0, fileName.Length - 4) + ".pdf";
//打开Word文件
PageOfficeCtrl1.WebOpen(Server.MapPath("doc/") + fileName, PageOffice.OpenModeType.docNormalEdit, "张佚名");
之后在前台页面添加执行自定义按钮“保存”、“另存为PDF文件”时执行的的JS函数:Save()、SaveAsPDF(),代码如下:
//保存
function Save() {
document.getElementById("PageOfficeCtrl1").WebSave();
}
//另存为PDF文件
function SaveAsPDF() {
document.getElementById("PageOfficeCtrl1").WebSaveAsPDF();
//转换为PDF文件后,在OpenPDF.aspx中打开转换后的PDF文件
window.open("OpenPDF.aspx?fileName=<%=pdfName %>");
}
第四步:在网站中创建动态页面SaveFile.aspx保存Word文件,在后台添加代码如下:
//定义FileSaver对象
PageOffice.FileSaver fs = new PageOffice.FileSaver();
//保存Word文件
fs.SaveToFile(Server.MapPath("doc/") + fs.FileName);
//关闭FileSaver对象
fs.Close();
第五步:在网站中创建动态页面OpenPDF.aspx。在前台页面中添加层标签<div></div>,从工具箱中拖动一个PDFCtrl控件到该层中(PDFCtrl控件位于工具箱下方),之后要设置该层的高和宽,否则打开的PDF文档将无法正常显示,部分HTML代码如下:
<divstyle="width: auto; height: 700px;">
<po:PDFCtrlID="PDFCtrl1"runat="server"OnLoad="PDFCtrl1_Load"Theme="Office2007">
</po:PDFCtrl>
</div>
之后,在OpenPDF.aspx.cs页面中添加代码,设置PageOffice服务器页面、添加自定义按钮和打开PDF文件。部分代码如下:
//设置服务器页面
PDFCtrl1.ServerPage = "../pageoffice/server.aspx";
//设置PDF文件的主题
PDFCtrl1.Theme = PageOffice.ThemeType.CustomStyle;
// 按键说明:光标键、Home、End、PageUp、PageDown可用来移动或翻页;数字键盘+、-用来放大缩小;数字键盘/、*用来旋转页面。
//AddCustomToolButton方法中的三个参数分别为:按钮名称、按钮执行的JS函数、按钮图标的索引
PDFCtrl1.AddCustomToolButton("打印", "Print()", 6);
PDFCtrl1.AddCustomToolButton("-", "", 0);
PDFCtrl1.AddCustomToolButton("实际大小", "SetPageReal()", 16);
...
...
PDFCtrl1.AllowCopy = false;//是否允许拷贝
string fileName = Request.QueryString["fileName"];
//打开PDF文件
PDFCtrl1.WebOpen("doc/" + fileName);
最后在前台页面添加相应的JS函数,如下:
//打印
function Print() {
document.getElementById("PDFCtrl1").ShowDialog(4);
}
//设置PDF文件的实际大小
function SetPageReal() {
document.getElementById("PDFCtrl1").SetPageFit(1);
}
...
...
如此,就能实现文件的转换了。
方案总结:
利用PageOffice开发平台中的组件PageOfficeCtrl和PDFCtrl,可简单轻松的实现文件从Word到PDF格式的转换,极大地提高开发效率。