Java填充PDF并返回填充后PDF文件及对应base64码

白大锅 2024-08-26 17:05:02 阅读 74

前期准备

下载PDF编辑工具(Adobe Acrobat 9 Pro):

在这里插入图片描述

可以主页关注小程序【白哥Java】回复【PDF编辑软件】即可获取 或者直接联系博主也可

在这里插入图片描述

主页如下:

在这里插入图片描述

软件使用流程

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

此处流程为文本域流程 图片或其他大致相同

生成模板PDF样式如下:

在这里插入图片描述

代码开发

引入依赖

<code><dependency>

<groupId>com.itextpdf</groupId>

<artifactId>itextpdf</artifactId>

<version>5.5.13.2</version>

</dependency>

<dependency>

<groupId>com.itextpdf</groupId>

<artifactId>itext-asian</artifactId>

<version>5.2.0</version>

</dependency>

代码块

public static String editPdfAndGetBase64(String srcPdfPath, String destPdfPath) throws Exception {

PdfReader reader = new PdfReader("C:\\Users\\Administrator\\Downloads\\附2:电子处方文件参考模板-副本.pdf");

ByteArrayOutputStream baos = new ByteArrayOutputStream();

PdfStamper stamper = new PdfStamper(reader, baos);

AcroFields form = stamper.getAcroFields();

BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

form.addSubstitutionFont(bf);

form.setField("patientName", "周大炮");

form.setField("age", "24岁");

form.setField("prescriptionType", "普通\n处方");

form.setField("hisRegistorNo", "263002");

form.setField("hisPrescriptionNo", "HE920394223");

form.setField("recipeDate", "2024-08-14");

form.setField("department", "内分泌内科");

form.setField("sex", "男");

form.setField("icdName", "蚊媒介的病毒性发热,其他特指的");

form.setField("drugs","1.瑞格列奈片 2mg*30片/盒 4盒"+"\n"+" 用法用量:口服 每天3次 一次2片"+"\n");

stamper.setFormFlattening(true);

stamper.close();

reader.close();

// 将ByteArrayOutputStream的内容写入文件

try (FileOutputStream fos = new FileOutputStream("D:\\处方流转\\12.pdf")) {

fos.write(baos.toByteArray());

}

// 将ByteArrayOutputStream的内容转换为Base64字符串

byte[] pdfBytes = baos.toByteArray();

String encode = Base64Utils.encode(pdfBytes);

// 返回Base64字符串

return encode;

}

填充后文件样式

在这里插入图片描述



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。