java pdf form_java 填充 pdf 表单

maven

com.itextpdf

forms

7.1.11

示例代码:

public class AwardGenerateServiceImpl implements IAwardGenerateService {

private static final String FONT_PATH = "/files/SimSun.ttf";

public static void doGenerateS1(AwardPdfSampleForm sampleForm,

String sampleName,

HttpServletResponse response) {

InputStream pdfIs = null;

InputStream fontIs = null;

PdfDocument pdf = null;

try {

pdfIs = new ClassPathResource("/files/" + sampleName).getInputStream();

fontIs = new ClassPathResource(FONT_PATH).getInputStream();

ServletOutputStream out = response.getOutputStream();

pdf = new PdfDocument(new PdfReader(pdfIs), new PdfWriter(out));

PdfAcroForm form = PdfAcroForm.getAcroForm(pdf, false);

PdfFont font = PdfFontFactory.createFont(StreamUtil.copyToByteArray(fontIs), PdfEncodings.IDENTITY_H);

form.getField("certNo").setValue(sampleForm.getCertNo(), font, 14f).setReadOnly(true);

form.getField("realName").setValue(sampleForm.getRealName(), font, 14f).setReadOnly(true);

form.getField("productName").setValue(sampleForm.getProductName(), font, 14f).setReadOnly(true);

form.getField("contestName").setValue(sampleForm.getContestName(), font, 14f).setReadOnly(true);

form.getField("category").setValue(sampleForm.getCategory(), font, 14f).setReadOnly(true);

form.getField("group").setValue(sampleForm.getGroup(), font, 14f).setReadOnly(true);

form.getField("award").setValue(sampleForm.getAward(), font, 14f).setReadOnly(true);

form.getField("teacherName").setValue(sampleForm.getTeacherName(), font, 14f).setReadOnly(true);

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

if (pdfIs != null) {

pdfIs.close();

}

if (fontIs != null) {

fontIs.close();

}

if (pdf != null) {

pdf.close();

}

} catch (IOException e) {

log.error("err", e);

}

}

}

}

资源文件

f05eb24e96f2b8a5662255a5f6543495.png

其中 s1.pdf 是sampleName,SimSun.ttf 是宋体

额外说明:由于pdf 为二进制文件,需要配置 maven 不进行过滤,否则打包后会损坏。

org.springframework.boot

spring-boot-maven-plugin

maven-resources-plugin

pdf

ttf

2233

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值