Augu4
Augu4
2019-03-06 10:00

[java]使用itext以及itext-asian实现pdf根据模板文件填充数据生成新pdf文件遇到的问题

5
  • java
  • jar

发现中文 显示问题,不知道是否是itext-asian5.2.0包的bug,在中文显示中,只有“证”字无法显示,其他中文目前没发现有不显示的问题。

        String templatePath = "D:/updates/pdfTest.pdf";
        //生成的新文件路径
        String newPDFPath = "D:/updates/NewpdfTest.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();

            String[] str = {"小证明","110","13666666666","163@qq.com",
                    "二代身份证"
                    ,"230*************1221"};
            int i = 0;
            java.util.Iterator<String> it = form.getFields().keySet().iterator();
            while(it.hasNext()){
                String name = it.next().toString();
                System.out.println(name);
                form.setField(name, str[i++]);
            }
            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) {
            e.printStackTrace();
        } catch (DocumentException e) {
            e.printStackTrace();
        }

新生成的pdf文件:
图片说明

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

1条回答