java 通過itext操作pdf模板文字域填寫內容
阿新 • • 發佈:2019-02-02
1.pdf模板我這邊用的是福昕高階PDF編輯器(臨時使用14天)直接生成,通過工具的編輯表單新增文字域
2.pdf模板生成後,接著就是程式碼部分了:
(1)新增jar
<dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.1</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itext-asian</artifactId> <version>5.2.0</version> </dependency>
(2)程式碼部分
import com.itextpdf.text.*; import com.itextpdf.text.pdf.*; import java.io.ByteArrayOutputStream; import java.io.FileOutputStream; import java.io.IOException; public class test1 { public static void main(String[] args) { //模板路徑 String templatePath = "E:/pdf/pdf.pdf"; //生成的新檔案路徑 String newPDFPath = "E:/pdf/ss1.pdf"; PdfReader reader; FileOutputStream out; ByteArrayOutputStream bos; PdfStamper stamper; try { out = new FileOutputStream(newPDFPath);//輸出流 reader = new PdfReader(templatePath);//讀取pdf模板 bos = new ByteArrayOutputStream(); stamper = new PdfStamper(reader, bos); AcroFields form = stamper.getAcroFields(); java.util.Iterator<String> it = form.getFields().keySet().iterator(); while (it.hasNext()) { String name = it.next().toString(); //填寫內容部分 form.setField(name, "2465465145648456"); // } stamper.setFormFlattening(true);//如果為false那麼生成的PDF檔案還能編輯,一定要設為true stamper.close(); Document doc = new Document(); PdfCopy copy = new PdfCopy(doc, out); doc.open(); PdfImportedPage importPage = copy.getImportedPage( new PdfReader(bos.toByteArray()), 1); copy.addPage(importPage); doc.close(); } catch (IOException e) { System.out.println(1); } catch (DocumentException e) { System.out.println(2); } } }