Java Maven 根据模板生成PDF文件

记录下,忘记是谁的文章了,侵权请联系博主删除。

参考:https://blog.csdn.net/CSDN__FL/article/details/82870571

pom:

       
        
            com.itextpdf
            itextpdf
            5.5.11
        
       
        
               com.itextpdf
               itext-asian
               5.2.0
        

使用word转成PDF文件模板

Java Maven 根据模板生成PDF文件_第1张图片

使用 Adobe Acrobat Pro 打开文件【模板.pdf】

Java Maven 根据模板生成PDF文件_第2张图片

Java Maven 根据模板生成PDF文件_第3张图片

Java Maven 根据模板生成PDF文件_第4张图片

整体代码:

package com.mj.mifang.test.controller;

import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.springframework.stereotype.Controller;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
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;

@Controller
public class Model {

	// 利用模板生成pdf
		public static void fillTemplate(Map o) {
			// 模板路径
			String templatePath = "C:/pdf/model.pdf";//原PDF模板
			// 生成的新文件路径
			String newPDFPath = "C:/pdf/aa.pdf";
			 PdfReader reader;
		        FileOutputStream out;
		        ByteArrayOutputStream bos;
		        PdfStamper stamper;
		        try {                                       //↓↓↓↓↓这个是字体文件
		            BaseFont bf = BaseFont.createFont("C:/windows/fonts/simsun.ttc,1",BaseFont.IDENTITY_H, BaseFont.EMBEDDED);//用的是系统字体,此路径是系统路径,可网上自行下载字体类型
		            Font FontChinese = new Font(bf, 12f, Font.BOLD);
		            out = new FileOutputStream(newPDFPath);// 输出流
		            reader = new PdfReader(templatePath);// 读取pdf模板
		            bos = new ByteArrayOutputStream();
		            stamper = new PdfStamper(reader, bos);
		            AcroFields form = stamper.getAcroFields();
		            Map datemap = (Map)o.get("datemap");
		            form.addSubstitutionFont(bf);
		            for(String key : datemap.keySet()){
		                String value = datemap.get(key);
		                System.out.println(value+"*(*(*(**---:"+key);
		                form.setField(key,value);
		            }
		            stamper.setFormFlattening(true);// 如果为false,生成的PDF文件可以编辑,如果为true,生成的PDF文件不可以编辑
		            stamper.close();
		            Document doc = new Document(PageSize.A4, 0, 0, 0, 0);
		            Font font = new Font(bf, 32);
		            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();
		            System.err.println("生成pdf文件完成!");
		        } catch (IOException e) {
		            System.out.println(e);
		        } catch (DocumentException e) {
		            System.out.println(e);
		        }
		}
		public static void main(String[] args) {
			 Map map = new HashMap();
		        map.put("Text1","HT188888888888");//Text1 是PDF表单名称,有多少就添加多少
		        map.put("Text2","李四");//Text2 是PDF表单名称,有多少就添加多少
		        map.put("Text3","111111111111111111");//
		        map.put("Text4","188888888888");
		        map.put("Text5","王五");//
		        map.put("Text6","11111111111111111");//
		        map.put("Text7","188888888888");
		        map.put("Text8","111");//
		        map.put("Text9","2018-11-11");//
		        map.put("Text10","2018-11-18");
		        map.put("Text11","0.05");//
		        map.put("Text13","阿拉蕾");//
		        map.put("Text14","888.67");
		        map.put("Text15","李四");//
		        map.put("Text16","王五");
		        map.put("Text17","2018-11-11");//
		        Map o=new HashMap();
		        o.put("datemap",map);
		        //调用方法
		        fillTemplate(o);
		}
}

 

你可能感兴趣的:(java)