7       云文档打印

本地方式打印MS Office WPS 文档,都需要在客户端安装 MS Office WPS 软件,对有些项目来说,这可能有些不利的因素,首先是客户端操作系统和软件版本的不一致,可能导致打印效果有差异,其次,每个客户端安装软件会增加成本,第三,客户端有可能根本没有安装这些软件。参见MS Office 文档打印

 

同时,由于技术限制MS Office WPS 文档本地打印无法实现打印预览。

 

JCP 的云文档打印模式,可以有效解决上述问题,其打印流程图示如下:

 

 

云文档打印方式,由服务端将MS Office WPS 文档转换成JCP专用格式,再由 JCP.exe 负责打印、预览,这样,客户端就不需要任何第三方程序了。

 

 

 

 

 

7.1   打印、打印预览PDFWordExcelPowerpointWPS 文档

云文档打印

1.  function doPrint(preview) {    

2.      var type = ...;    

3.      var url = ...;    

4.      // 取得云文档服务实例    

5.      var docxService = getJCP().docxService();    

6.      if (preview)    

7.          docxService.printPreview(url, {    

8.                      fileType : type    

9.                  }); // 打印预览    

10.     else    

11.         docxService.print(url, {    

12.                     fileType : type    

13.                 }); // 直接打印或弹打印机选择对话框打印    

14. }  

要使用云文档打印方式,必须先用 docxService 方法,取得云文档服务实例,再使用print 方法,来进行打印,用printPreview 方法来打印预览。

 

print printPreview 方法,它们的参数是一致的,第一个参数表示文档的网络地址,这个地址可以是静态的文件,也可以是带参数由后台程序实时生成的文档。

 

第二个参数里,可以设置一些打印参数,其中,fileType是唯一必须的属性,表示文档类型,其值是以下中的一个:

doc,docx,xls,xlsx,ppt,pptx,wps,pdf

 

在第二个参数里,可以使用 prompt 属性来指明,打印前是否需要弹出打印机选择对话框。详见print 方法。

 

7.2   云文档打印基本设置

云文档打印基本设置

1.  var myDoc = {    

2.      fileType : 'doc',    

3.      copies : 2,    

4.      from : 1,    

5.      to : 2,    

6.      duplex : true,    

7.      printer : "HP LaserJet M1000"    

8.  }    

9.  // 取得云文档服务实例   

10. var docxService = getJCP().docxService();    

11. docxService.print("d.doc", myDoc);  

你可以用 docxService renderTo方法,将文档显示在一个 iframe中,第一个参数表示文档地址,第二个参数,表示一个iframe对象,如果你想显示在另一个tab中,可以设置此参数为空值,第三个参数为打印参数,同print 方法。

 

7.3   嵌入预览

嵌入预览

 

云文档打印可以集成开源项目PDF.js,可以很好地实现WEB页内预览,如上图所示,也可以使用页内预览的按钮,进行选择打印机打印,如下图所示,也可通过按钮直接打印。

 

以下将a.doc文档,显示在idvieweriframe中:

1.  ...  

2.  function doPreview() {  

3.      var viewer = document.getElementById("viewer");  

4.      getJCP().docxService().renderTo("a.doc", viewer, {  

5.          fileType : "doc"  

6.      });       

7.  }  

8.  ...  

9.  <input type="button" value="预览" onclick="doPreview()">  

10. <iframe id="viewer"></iframe>  

你可以用 docxService renderTo方法,将文档显示在一个 iframe中,第一个参数表示文档地址,第二个参数,表示一个iframe对象,如果你想显示在另一个tab中,可以设置此参数为空值,第三个参数为打印参数,同print方法。