使用python添加注释,为什么在注释好的文件中不显示呢?

python中使用以下代码在pdf中添加注释:

def text_annotation_add(infile, outfile, inword, x1, x2, top, bottom, page_num):
    path_infile = infile
    path_outfile = outfile

    pdfDocument = ap.Document(path_infile)

    freeTextAnnotation = ap.annotations.FreeTextAnnotation(pdfDocument.pages[page_num],
                                                           ap.Rectangle(x1, top, x2, bottom, False),
                                                           ap.annotations.DefaultAppearance())
    freeTextAnnotation.title = "User"
    # freeTextAnnotation.subject = inword
    freeTextAnnotation.contents = inword
    # freeTextAnnotation.states = ap.annotations.AnnotationState.ACCEPTED
    freeTextAnnotation.flags = ap.annotations.AnnotationFlags.PRINT
    freeTextAnnotation.color = ap.Color.red
    freeTextAnnotation.text_style.font_name = "黑体"
    freeTextAnnotation.text_style.font_size = 20

    pdfDocument.pages[page_num].annotations.append(freeTextAnnotation)
    pdfDocument.save(path_outfile)

结果显示如下:

文字信息是有的,但显示不出来。稍微对文字做编辑,显示才能正确。这是什么原因呢?

@chenzhao

我们正在检查,很快就会回复您。

@chenzhao
出现文本失真的原因有两个:
1)对应的字符在Simhei字体中不存在,显示为方块。
2)库没有找到Simhei字体,更换为其他字体。 我们很可能犯了一个错误。

请提供有关此问题的测试文档,以便我们检查问题所在。

病例报告表(CRF)模板.pdf (443.1 KB)
测试文档是这个

如果 Simhei 字体安装在系统字体文件夹中,以下示例将正常工作。

import aspose.pdf as ap
# license = ap.License()
# license.set_license("Aspose.PDF.Pythonvia.NET-2024.lic")


def text_annotation_add(infile, outfile, inword, llx, lly, urx, ury, page_num):
    path_infile = infile
    path_outfile = outfile
    
    pdfDocument = ap.Document(path_infile)

    freeTextAnnotation = ap.annotations.FreeTextAnnotation(pdfDocument.pages[page_num],
                                                        ap.Rectangle(llx, lly, urx, ury, False),
                                                        ap.annotations.DefaultAppearance())
    freeTextAnnotation.title = "User"    
    freeTextAnnotation.contents = inword    
    freeTextAnnotation.flags = ap.annotations.AnnotationFlags.PRINT
    freeTextAnnotation.color = ap.Color.red
    freeTextAnnotation.text_style.font_name = "SimHei"
    freeTextAnnotation.text_style.font_size = 20

    pdfDocument.pages[page_num].annotations.append(freeTextAnnotation)
    pdfDocument.save(path_outfile)

text_annotation_add("sample.pdf","sample-res.pdf","中文示例文本",10,600,210,650,1)

请检查它是否适用于您。

字体库中有simhei的字体,我改成了这个,但是问题没有解决。不过英文的内容都没问题,应该是字体的问题。不过暂时也用不到标注中文。非常感谢!