- 下載工具
鏈接:https://pan.baidu.com/s/1Ta8iokGyPhJOnetGqPwtUg
提取碼:e0m3
壓縮文件解壓密碼:www.downza.cn
使用 Adobe Acrobat DC打開想要修改的PDF文件,點擊【准備表單】
上圖中的fill_1,就是可以修改的文本域key,雙擊可以重命名
2.導入使用的jar包
<dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.5</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itext-asian</artifactId> <version>5.2.0</version> </dependency>
3. 復制下面代碼,修改文件地址
import com.itextpdf.text.DocumentException; import com.itextpdf.text.Image; import com.itextpdf.text.Rectangle; import com.itextpdf.text.pdf.*; import java.io.FileOutputStream; import java.io.IOException; import java.util.HashMap; import java.util.Map; public class Demo { public static void main(String[] args) throws IOException, DocumentException { Map<String, Object> data = new HashMap<>();//要插入的數據 data.put("fill_1", "隔壁老王"); data.put("fill_2", "隔壁老李"); //初始化itext //設置編碼 BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); //要修改的模本文件:E:\谷歌下載\templat.pdf PdfReader pdfReader = new PdfReader("E:\\谷歌下載\\templat.pdf"); //修改之后輸出文件地址 E:\谷歌下載\update_tempalte.pdf PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileOutputStream("E:\\谷歌下載\\update_tempalte.pdf")); AcroFields form = pdfStamper.getAcroFields(); form.addSubstitutionFont(baseFont); //寫入數據 for (String key : data.keySet()) { String value = data.get(key).toString(); //key對應模板數據域的名稱 form.setField(key, value); } //還要將圖片添加到指定的key文本域中 int pageNo = form.getFieldPositions("fill_11_2").get(0).page; Rectangle signRect = form.getFieldPositions("fill_11_2").get(0).position; float x = signRect.getLeft(); float y = signRect.getBottom(); //要添加的圖片地址 C:\Users\Administrator\Desktop\6.jpeg Image image = Image.getInstance("C:\\Users\\Administrator\\Desktop\\6.jpeg"); PdfContentByte under = pdfStamper.getOverContent(pageNo); //設置圖片大小 image.scaleAbsolute(signRect.getWidth(), signRect.getHeight()); //設置圖片位置 image.setAbsolutePosition(x, y); under.addImage(image); //設置不可編輯 pdfStamper.setFormFlattening(true); pdfStamper.close(); } }
參考地址:https://www.cnblogs.com/mingyueyy/p/14821398.html
https://www.cnblogs.com/ruowei/p/11419358.html
感謝兩位大佬。