ReceiptDemoUtils.java 3.71 KB
Newer Older
zhaojg committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
package com.brilliance.utils;

import com.brilliance.bo.Receipt;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.forms.PdfAcroForm;
import com.itextpdf.forms.fields.PdfFormField;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class ReceiptDemoUtils {

    public static void main(String[] args) throws Exception {
        // 创建一个Date对象,表示当前日期和时间
        Date now = new Date();
        // 创建一个SimpleDateFormat对象,并定义日期格式
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
        // 使用format方法格式化日期
        String formattedDate = dateFormat.format(now);
        String str = new Date().getTime()+"";
        String id = formattedDate + str.substring(str.length()-8);
        String templatePath = ".\\doc\\receipt.pdf";
        String outputPath = "C:\\Users\\zhaojg\\.m2\\repository\\cn\\receipt"+id+".pdf";

        // 创建PdfDocument对象,指定输入和输出文件路径
        PdfDocument pdfDoc = new PdfDocument(new PdfReader(templatePath), new PdfWriter(outputPath));

        // 获取表单
        PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDoc, true);

        Receipt receipt = new Receipt();
        receipt.setReceiptNum(id);
        receipt.setReceiptNo(id);
        receipt.setBuyDate("2022/3/12");
        receipt.setStartDate("2022/3/12");
        receipt.setSeal("印密");
        receipt.setYear("2022");
        receipt.setPeriod("01");
        receipt.setDeadline("三年");
        receipt.setRate("3.45%");
        receipt.setEndDate("2025/3/12");
        receipt.setTellerNum("9527");
        receipt.setAccountNum("130503196701010001");
        receipt.setAccountName("张三");
        receipt.setMoney("人民币壹百万元整  RMB1,000,000.00");
        receipt.setRedemptionDate("2023/3/12");
        receipt.setInterestAccDays("365");
        receipt.setInterest("34500");
        receipt.setOperator("经办员");
        receipt.setStatus("有效");
        receipt.setRecordNum("NO."+id);

        Map<String, PdfFormField> fields = form.getFormFields();

        // 准备数据
        Map<String, String> data = new HashMap<>();
        data.put("receiptNum", receipt.receiptNum);

        data.put("receiptNo", receipt.receiptNo);
        data.put("buyDate", receipt.buyDate);
        data.put("startDate", receipt.startDate);
        data.put("seal", receipt.seal);
        data.put("year", receipt.year);
        data.put("period", receipt.period);
        data.put("deadline", receipt.deadline);
        data.put("rate", receipt.rate);
        data.put("endDate", receipt.endDate);
        data.put("tellerNum", receipt.tellerNum);
        data.put("accountNum", receipt.accountNum);
        data.put("accountName", receipt.accountName);
        data.put("money", receipt.money);
        data.put("redemptionDate", receipt.redemptionDate);
        data.put("interestAccDays", receipt.interestAccDays);
        data.put("interest", receipt.interest);
        data.put("operator", receipt.operator);
        data.put("status", receipt.status);
        data.put("recordNum", receipt.recordNum);

        // 填充表单字段
        for (Map.Entry<String, String> entry : data.entrySet()) {
            if (fields.containsKey(entry.getKey())) {
                fields.get(entry.getKey()).setValue(entry.getValue());
            }
        }

        // 更新表单(如果需要)
        form.flattenFields();

        // 关闭文档
        pdfDoc.close();
    }
}