如今word中建立模板:java
輸出爲pdf文件2.pdf。字體
<dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>${itextpdf.version}</version> </dependency>
三、java實現spa
import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import java.util.HashMap; import java.util.Map; import org.junit.Test; import com.itextpdf.text.pdf.AcroFields; import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.PdfReader; import com.itextpdf.text.pdf.PdfStamper; public class TestPdf { @Test public void testPdf() { String inputFileName = "E:\\1\\2.pdf"; String outputFileName = "E:\\1\\3.pdf"; OutputStream os = null; PdfStamper ps = null; PdfReader reader = null; try { os = new FileOutputStream(new File(outputFileName)); // 2 讀入pdf表單 reader = new PdfReader(inputFileName); // 3 根據表單生成一個新的pdf ps = new PdfStamper(reader, os); // 4 獲取pdf表單 AcroFields form = ps.getAcroFields(); // 5給表單添加中文字體 這裏採用系統字體。不設置的話,中文可能沒法顯示 // BaseFont bf = BaseFont.createFont("C:/Windows/Fonts/SIMYOU.TTF", // BaseFont.IDENTITY_H, BaseFont.EMBEDDED); // 方法二:使用iTextAsian.jar中的字體 // BaseFont baseFont = // BaseFont.createFont("STSong-Light",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED); BaseFont bf = BaseFont.createFont("/SIMYOU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); form.addSubstitutionFont(bf); // 6查詢數據================================================ Map<String, Object> data = new HashMap<String, Object>(); data.put("question", "你叫什麼名字?"); data.put("answer", "張三"); // 7遍歷data 給pdf表單表格賦值 for (String key : data.keySet()) { form.setField(key, data.get(key).toString()); } ps.setFormFlattening(true); System.out.println("===============PDF導出成功============="); } catch (Exception e) { System.out.println("===============PDF導出失敗============="); e.printStackTrace(); } finally { try { ps.close(); reader.close(); os.close(); } catch (Exception e) { e.printStackTrace(); } } } }
注意:SIMYOU.TTF放在resources目錄下。code