程序员在开发项目时,可能有时需要将项目中上传的文件进行转换,如将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;

 

// 按键说明:光标键、HomeEndPageUpPageDown可用来移动或翻页;数字键盘+-用来放大缩小;数字键盘/*用来旋转页面。

//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开发平台中的组件PageOfficeCtrlPDFCtrl,可简单轻松的实现文件从WordPDF格式的转换,极大地提高开发效率。