javascript - 如何使用 pdf-lib 使用带有自定义字体的 javascript 填写 pdf 表单?
问题描述
我有一个自定义 pdf,里面有表格,我想用值填充它。
使用某些字体并不难,但我不知道如何设置fontSize
字段,因为在某些字段中确实很重要。
这是我的自动取款机代码:
export async function stampPdfLib(payload: {
templatePath: string,
data: { [key: string]: string },
version: string,
}): Promise<Uint8Array> {
const formPdfBytes = await fetch(payload.templatePath).then(res => res.arrayBuffer());
const pdfDoc = await PDFDocument.load(formPdfBytes);
const timesRomanFont = await pdfDoc.embedFont(StandardFonts.TimesRoman);
const form = pdfDoc.getForm();
form.updateFieldAppearances(timesRomanFont); // I could set font, but ...
form.getTextField('field_name').setText('a'); // I couln't set fontSize
const savedBytes = await pdfDoc.save();
return savedBytes;
}
解决方案
每个表单字段类型 ( PDFCheckBox
, PDFTextField
,...) 都具有适当类型 ( , ,...) 的PDFForm
只读属性。在这些类型中可能会完全隐藏您所追求的。在 中,您可以在 下找到表单字段类型,对于您可以导航到的类型。但是,在这种情况下,您可以直接为 textField - ( of )公开方法。acroField
PDFAcroCheckBox
PDFAcroText
node_modules/pdf-lib/src
/api/form
acroField
/core/acroform
textField.setFontSize(number)
v1.16.0
pdf-lib
没有任何设置 - default behavior
:
form.getTextField('field_name').setFontSize(11)
或者form.getTextField('field_name').acroField.setFontSize(11);
form.getTextField('field_name').setFontSize(20)
或者
form.getTextField('field_name').acroField.setFontSize(20);
当然,您必须注意输入字段的大小(以防字体太大)。
推荐阅读
- markdown - 块引号未在 readme.md 中正确呈现
- google-sheets - 谷歌工作表从多个工作表导入给出错误
- android - Android中的@PrimaryKey注释字段不被视为单独的字段吗?
- r - 网页在浏览器中工作,但不是来自 R:SSL 证书问题:证书已过期
- java - 序列化json时的动态属性名
- java - 使用 jooq dsl 插入超过 22 个字段
- r - 系统在 R 中使用 mlogit 在计算上是奇异的
- python - 如何将 Lab 颜色空间更改为 RGB 0-255
- mongodb - MongoDB 按字段查找对象数组(连接条件和不相关的子查询)
- java - Thymeleaf 与 JSP - 返回 ModelAndView