『壹』 java調用freemarker模板文件在伺服器生成pdf或word文
在線預覽文檔功能實現概述
在前年的項目中,需要一個在線預覽功能,即用戶上傳的Word或Excel等文檔可以不經過下載直接在線預覽。項目部署在Linux上,對比了多種解決方案後,決定將所有文檔統一轉化為PDF,使用H5技術的PDF在線預覽模塊來實現在線預覽。此過程涉及兩個關鍵問題:文檔轉換為PDF和在線預覽PDF。
首先,需解決用戶上傳文檔轉化為PDF的問題。考慮到項目部署環境,排除了基於MS Office的方案,最終選定使用LibreOffice的SDK完成轉換。為解決Java與LibreOffice交互的問題,採用開源的JODConverter插件。測試結果顯示轉換效果滿意,速度理想,但該插件不支持多線程。
其次,實現在線預覽PDF的方案。考慮到Flash的復雜性和高昂成本,選擇了使用火狐自家的PDF.js,純H5實現,無需任何插件,滿足在線預覽需求。但其不支持IE8以下瀏覽器,存在一定的兼容性限制。
以上方案解決了文檔預覽問題,對於數據填寫後生成固定格式的文檔需求,可參考此解決方案。FreeMarker作為視圖層的一部分,與文檔生成屬於不同層次,與生成文檔並無直接關聯。
針對生成固定格式文檔的需求,推薦使用Java中強大的Apache POI庫。POI庫對於讀取文檔功能表現良好,但對於寫入功能,尤其是對樣式操作的直觀性有所欠缺。盡管如此,對於所謂的「固定格式表格」生成,POI庫應能滿足需求。
綜上所述,解決文檔預覽和生成固定格式文檔的問題,推薦方案為:POI(生成文檔)-> LibreOffice + JODConverter(轉換文檔至PDF)。如果需要在線預覽文檔,則使用PDF.js。此方案在滿足用戶需求的同時,兼顧了功能實現的高效性和兼容性。
『貳』 怎麼用java動態生成pdf文檔
Flying-Saucer + iText + Velocity
1. 第一步
將jar包放到你的工程里,需要的jar如下:
bcprov-jdk15-140.jar
core-renderer.jar
iText-2.0.8.jar
iTextAsian.jar
velocity-1.4.jar
Jar包下載地址:http://code.google.com/p/flying-saucer/downloads/list
2. 第二步
設計模版,進行排版調整樣式,css樣式也可以導入@import 等,通過Velocity模版引擎動態替換 頁面內容,以下是模版內容:
<?xml version="1.0" encoding="UTF-8" ?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>PDF模版</title>
<style type="text/css">
<!--
body {
font: 100% Verdana, Arial, Helvetica, sans-serif;
margin: 0;
padding: 0;
text-align: center;
color: #000000;
}
.oneColLiqCtrHdr #container {
width: 100%;
margin: 0 auto;
text-align: left;
}
div.header-left {display: none}
div.header-right {display: none}
div.footer-left {display: none}
div.footer-right {display: none}
『叄』 Java如何使用Java創建一個空的PDF文檔
package com.yii;import java.io.IOException;import org.apache.pdfbox.pdmodel.PDDocument;import org.apache.pdfbox.pdmodel.PDPage;// 需要下 apache pdfbox包和apache.commons.loggin烏,下載地址:http://pdfbox.apache.org/download.cgi 和 http://commons.apache.org/proper/commons-logging/download_logging.cgi// 在本示例中下載使用的是:pdfbox-2.0.7.jar // 將下載的pdfbox-2.0.7.jar添加到Eclipse項目依懶庫中。// 右鍵點擊:"java_apache_pdf_box"->"Bulid Path"->"Add External Artchives...",然後選篤下載的"pdfbox-2.0.7.jar"和"commons-logging-1.2.jar"文件 public class CreatingEmptyPdf {
public static void main(String args[]) throws IOException {
// Creating PDF document object
PDDocument document = new PDDocument();
// Add an empty page to it
document.addPage(new PDPage());
// Saving the document
document.save("F:/worksp/javaexamples/java_apache_pdf_box/BlankPdf.pdf");
System.out.println("PDF created");
// Closing the document
document.close();
}}