首页 > 解决方案 > 使用 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)

标签: pythonpypdf2

解决方案


推荐阅读