1. 程式人生 > >[轉載]java實現word轉pdf

[轉載]java實現word轉pdf

write 方法 class toolbar servlet 效果 app 文檔 實現

 最近遇到一個項目需要把word 轉成pdf,百度了一下網上的方案有很多,比如虛擬打印、給word 裝擴展插件等,這些方案都依賴於ms word 程序,在java代碼中也得使用諸如jacob或jcom這類java com bridge,使得服務器開發受限於win平臺,而且部署起來也很麻煩。後來在某論壇看到了一個openoffice+jodconverter的轉換方案,可以完成word到PDF的轉換工作,服務器開發端需要安裝openoffice,但是需求一步額外的操作--需要在服務器開發上的某個端口提供一個openoffice服務,這對部署起來顯得麻煩了點,貌似也不太安全。
  偶然機會發現了PageOffice組件也可以實現word轉pdf功能。而且不只是簡單的把word轉為pdf格式,還可以支持動態填充數據到word模板文件然後再轉為pdf文件。
  以下為官網介紹:

  技術分享圖片

  調用PageOffice組件的FileMaker對象實現動態填充數據到word模板並轉為pdf的核心代碼如下:

技術分享圖片
    FileMakerCtrl fmCtrl = new FileMakerCtrl(request);
    fmCtrl.setServerPage(request.getContextPath()+"/poserver.zz");
    WordDocument doc = new WordDocument();
    doc.openDataRegion("PO_company").setValue("北京某某有限公司");//給數據區域賦值,即把數據填充到模板中相應的位置
    fmCtrl.setSaveFilePage("/savepdf"); //保存pdf的action或RequestMapping方法
    fmCtrl.setWriter(doc);
    fmCtrl.fillDocumentAsPDF("doc/template.doc", DocumentOpenType.Word, "123.pdf");//填充word模板並轉為pdf
技術分享圖片
  保存pdf的action或RequestMapping方法(/savepdf)的代碼:
    FileSaver fs = new FileSaver(request, response);
    fs.saveToFile(request.getSession().getServletContext().getRealPath("doc") +"/"+ fs.getFileName());
    fs.close();

  示例源碼及效果:http://www.zhuozhengsoft.com/dowm/,下載PageOffice for Java,解壓後,拷貝Samples4文件夾到Tomcat的Webapps目錄下,訪問:http://localhost:8080/Samples4/index.html,查看示例:二、34、FileMaker轉換單個文檔為PDF(以Word為例)

[轉載]java實現word轉pdf