• 大小: 5KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-14
  • 语言: 其他
  • 标签: itext  PDF导出  

资源简介

生成pdf的中文问题解决办法、导出pdf时,设置段落行间距方法,表单填充,使用itext方法填充相应表单域。

资源截图

代码片段和文件信息

package com.itextpdf.demo;

import java.io.FileOutputStream;

import com.itextpdf.io.IOException;
import com.itextpdf.io.source.ByteArrayOutputStream;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.AcroFields;
import com.itextpdf.text.pdf.baseFont;
import com.itextpdf.text.pdf.PdfCopy;
import com.itextpdf.text.pdf.PdfImportedPage;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;

public class ITextPdf {
public static void  FillForm() throws Exception {
        // 模板路径
        String templatePath = “C:/PdfTest/template/b.pdf“;
        // 生成的新文件路径
        String newPDFPath = “C:/PdfTest/template/b2.pdf“;
        PdfReader reader;
        FileOutputStream out;
        ByteArrayOutputStream bos;
        PdfStamper stamper;
        try{
            out = new FileOutputStream(newPDFPath);// 输出流到新的pdf没有b2.pdf时会创建
            reader = new PdfReader(templatePath);// 读取pdf模板
            bos = new ByteArrayOutputStream();
            stamper = new PdfStamper(reader bos);
            AcroFields form = stamper.getAcroFields();
           
           baseFont bf = baseFont.createFont(“C:/PdfTest/template/simsun.ttc1“ baseFont.IDENTITY_H baseFont.embedDED);//加载字体
            //获取form表单的表单名称--》测试看能不能获得pdf文件中的Form表单的名称
            java.util.Iterator it = form.getFields().keySet()
                    .iterator();
            while (it.hasNext())
            {
                String name = it.next().toString();
                System.out.println(name);
            }
            form.setFieldProperty(“name“ “textfont“ bf null);//设置字体
            form.setField(“name“ “王燕冬-王厝“);
            form.setFieldProperty(“age“ “textfont“ bf null);
            form.setField(“age“ “1“);
            form.setFieldProperty(“class“ “textfont“ bf null);
            form.setField(“class““jsj“);
            
 
            stamper.setFormFlattening(true);// 如果为false那么生成的PDF文件还能编辑,一定要设为true
            stamper.close();
            
            Document doc = new Document();
            
            PdfCopy copy = new PdfCopy(doc out);
            doc.open();
            PdfImportedPage importPage = null;
           for(int i = 1; i <= reader.getNumberOfPages(); i++) {
            importPage = copy
                       .getImportedPage(new PdfReader(bos.toByteArray()) i);
               copy.addPage(importPage);
           }
           doc.close();
        }
        catch (IOException e)        
        {
            e.printStackTrace();
        }
        catch (DocumentException e)
        {
            e.printStackTrace();
        }
}
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2020-05-30 15:09  TestDemo\
     文件        1778  2018-08-01 16:42  TestDemo\pom.xml
     目录           0  2018-08-01 16:14  TestDemo\src\
     目录           0  2018-08-01 16:14  TestDemo\src\main\
     目录           0  2018-08-01 16:19  TestDemo\src\main\java\
     目录           0  2018-08-01 16:19  TestDemo\src\main\java\com\
     目录           0  2018-08-01 16:19  TestDemo\src\main\java\com\itextpdf\
     目录           0  2018-08-01 16:20  TestDemo\src\main\java\com\itextpdf\demo\
     文件        2916  2018-08-01 17:32  TestDemo\src\main\java\com\itextpdf\demo\ITextPdf.java
     目录           0  2018-08-01 16:14  TestDemo\src\main\resources\
     目录           0  2018-08-01 16:14  TestDemo\src\test\
     目录           0  2018-08-01 16:25  TestDemo\src\test\java\
     目录           0  2018-08-01 16:24  TestDemo\src\test\java\com\
     目录           0  2018-08-01 16:24  TestDemo\src\test\java\com\itextpdf\
     目录           0  2018-08-01 16:25  TestDemo\src\test\java\com\itextpdf\test\
     文件         267  2018-08-01 17:15  TestDemo\src\test\java\com\itextpdf\test\TestDemo.java
     目录           0  2018-08-01 16:14  TestDemo\src\test\resources\

评论

共有 条评论