python - 使用 PDF 注释更改字体类型/大小
问题描述
我正在使用命名字段将数据写入 PDF,然后更改这些字段的属性以使其成为只读。这很棒,但我也希望能够操作文本,更改字体大小,甚至可能是字体本身。
根据 PDF 文档,/DA
应该控制文本,以便我尝试设置;
NameObject('/DA'): TextStringObject("font: bold italic Courier 80pt;")
但是,这根本不会操纵文本。
下面是用于添加数据然后操作字段的代码,除了字体设置之外,它可以完美地工作。
我也尝试使用/DS
标志来设置字体,这也没有影响。
pdf_reader = PdfFileReader(
open(full_certificate_path, "rb"), strict=False
)
pdf_writer = PdfFileWriter()
data_dict = {
'field1': event.title,
'field2': user.name,
'field3': strfdelta(
completion_time,
"{hours}:{minutes}:{seconds}"
),
}
pdf_writer.addPage(
pdf_reader.getPage(0)
)
try:
# Add data to a page
page = pdf_writer.getPage(0)
pdf_writer.updatePageFormFieldValues(page, data_dict)
for j in range(0, len(page['/Annots'])):
writer_annot = page['/Annots'][j].getObject()
writer_annot.update({
# Q: Text justification
# 0: left
# 1: centre
# 2: right
NameObject("/Q"): NumberObject(1),
# Default: '/DA' /Helv 12 Tf 0 g
NameObject('/DA'): TextStringObject(
"font: bold italic Courier 80pt;"
),
# Ff: Set field flags
# 1: ReadOnly
NameObject("/Ff"): NumberObject(1),
})
except KeyError:
print("No annotations/fields in the doc")
output_stream = StringIO()
pdf_writer.write(output_stream)
解决方案
推荐阅读
- apache-kafka - 为什么多个 Kafka 消费者在分组时以不同的速度消费,而不是没有?
- ios - getInitialLink 不起作用,但 onLink 在 react-native-firebase v6 中工作
- python - 在python pandas中将字符串与空格连接的最佳方法
- php - 来自远程服务器的 fopen (php) 仅用于读取
- python - 应用过滤器在 django 中搜索
- r - R闪亮中updateSliderInput的舍入行为
- javascript - 同一页面上的简单联系表成功弹出窗口
- python - 用 Python 平滑 2D 曲线
- java - 我无法正确格式化我的 JPA OneToMany 映射,以便在尝试查询数据库时不会出错
- unit-testing - 如何使用 func(w http.ResponseWriter, r *http.Request) 模拟测试