java使用itext編輯pdf


一、創建pdf模板

  使用PDFelement制作pdf模板(數據域的名稱對應后面插入的key)

二、導入maven依賴

        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.13</version>
        </dependency>

        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-asian</artifactId>
            <version>5.2.0</version>
        </dependency>        

三、插入數據和圖片到pdf模板

 1         Map<String, Object> data;//要插入的數據
 2         //初始化itext
 3         //設置編碼
 4         BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
 5         PdfReader pdfReader=new PdfReader(“pdf模板文件路徑”);
 6         PdfStamper pdfStamper=new PdfStamper(pdfReader, new FileOutputStream(“輸出pdf文件路徑”));
 7         AcroFields form = pdfStamper.getAcroFields();
 8         form.addSubstitutionFont(baseFont);
 9 
10         //寫入數據
11         for(String key:data.keySet()){
12             String value=data.get(key).toString();
13             //key對應模板數據域的名稱
14             form.setField(key,value);
15         }
16 
17         //添加圖片
18         int pageNo = form.getFieldPositions("img").get(0).page;
19         Rectangle signRect = form.getFieldPositions("img").get(0).position;
20         float x = signRect.getLeft();
21         float y = signRect.getBottom();
22         Image image = Image.getInstance("圖片路徑");
23         PdfContentByte under = pdfStamper.getOverContent(pageNo);
24         //設置圖片大小
25         image.scaleAbsolute(signRect.getWidth(), signRect.getHeight());
26         //設置圖片位置
27         image.setAbsolutePosition(x, y);
28         under.addImage(image);
29 
30         //設置不可編輯
31         pdfStamper.setFormFlattening(true);
32         pdfStamper.close();                    

 

PS:合並多個pdf成一個

 1         //先刪除之前的all.pdf
 2         String filePath="all.pdf";
 3         File file=new File(filePath);
 4         file.delete();   
 5         //要合並的所有pdf的路徑
 6         List<String> fileList;
 7         //all.pdf保存路徑
 8         String savepath="all.pdf";
 9         Document document = null;
10         try {
11             document = new Document(new PdfReader(fileList.get(0)).getPageSize(1));
12             PdfCopy copy = new PdfCopy(document, new FileOutputStream(savepath));
13             document.open();
14             for (int i = 0; i < fileList.size(); i++) {
15                 PdfReader reader = new PdfReader(fileList.get(i));
16                 int n = reader.getNumberOfPages();// 獲得總頁碼
17                 for (int j = 1; j <= n; j++) {
18                     document.newPage();
19                     PdfImportedPage page = copy.getImportedPage(reader, j);// 從當前Pdf,獲取第j頁
20                     copy.addPage(page);
21                 }
22             }
23         } catch (IOException e) {
24             e.printStackTrace();
25         } catch (DocumentException e) {
26             e.printStackTrace();
27         } finally {
28             if (document != null) {
29                 document.close();
30             }
31         }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM