使用文本注释处理PDF通过Python

如何将文本注释添加到现有的 PDF 文件中

文本注释是附加在 PDF 文档特定位置的注释。关闭时,注释显示为图标;打开时,它应显示一个弹出窗口,其中包含读者选择的字体和大小的注释文本。

注释由特定页面的 Annotations 集合包含。此集合仅包含该单独页面的注释;每个页面都有其自己的注释集合。

要向特定页面添加注释,请使用 add() 方法将其添加到该页面的注释集合中。

  1. 首先,创建要添加到 PDF 的注释。

  2. 然后打开输入的 PDF。

  3. 将注释添加到“页面”对象的Annotations集合中。

以下代码片段演示了如何在PDF页面中添加注释。


    import aspose.pdf as ap

    document = ap.Document(input_file)

    textAnnotation = ap.annotations.TextAnnotation(
        document.pages[1], ap.Rectangle(300, 700.664, 320, 720.769, True)
    )
    textAnnotation.title = "Aspose User"
    textAnnotation.subject = "Inserted text 1"
    textAnnotation.contents = "qwerty"
    textAnnotation.flags = ap.annotations.AnnotationFlags.PRINT
    textAnnotation.color = ap.Color.blue

    document.pages[1].annotations.append(textAnnotation)
    document.save(output_file)

从PDF文件获取文本注释


    import aspose.pdf as ap

    document = ap.Document(input_file)
    textAnnotations = [
        a
        for a in document.pages[1].annotations
        if (a.annotation_type == ap.annotations.AnnotationType.TEXT)
    ]

    for ta in textAnnotations:
        print(ta.rect)

从 PDF 文件中删除文本注释


    import aspose.pdf as ap

    document = ap.Document(input_file)
    textAnnotations = [
        a
        for a in document.pages[1].annotations
        if (a.annotation_type == ap.annotations.AnnotationType.TEXT)
    ]

    for ta in textAnnotations:
        document.pages[1].annotations.delete(ta)

    document.save(output_file)

如何添加(或创建)新的自由文本注释

自由文本注释直接在页面上显示文本。FreeTextAnnotation 类允许创建此类型的注释。在以下代码片段中,我们在字符串首次出现的位置上方添加自由文本注释。


    import aspose.pdf as ap

    # 加载 PDF 文件
    document = ap.Document(input_file)

    freeTextAnnotation = ap.annotations.FreeTextAnnotation(
        document.pages[1], ap.Rectangle(299, 713, 308, 720, True), ap.annotations.DefaultAppearance()
    )
    freeTextAnnotation.title = "Aspose User"
    freeTextAnnotation.color = ap.Color.light_green

    document.pages[1].annotations.append(freeTextAnnotation)
    document.save(output_file)

从 PDF 文件获取自由文本注释


    import aspose.pdf as ap

    document = ap.Document(input_file)
    freeTextAnnotations = [
        a
        for a in document.pages[1].annotations
        if (a.annotation_type == ap.annotations.AnnotationType.FREE_TEXT)
    ]

    for fa in freeTextAnnotations:
        print(fa.rect)

从 PDF 文件删除自由文本注释


    import aspose.pdf as ap

    # 加载 PDF 文件
    document = ap.Document(input_file)
    freeTextAnnotations = [
        a
        for a in document.pages[1].annotations
        if (a.annotation_type == ap.annotations.AnnotationType.FREE_TEXT)
    ]

    for fa in freeTextAnnotations:
        document.pages[1].annotations.delete(fa)

    document.save(output_file)

使用 StrikeOutAnnotation 删除文字

Aspose.PDF for Python 允许您在 PDF 文档中添加、删除和更新注释。 一种类允许您划掉注释。当在 PDF 中应用 StrikeOutAnnotation 时,会在指定文本上画一条线,以指示该文本应被删除或忽略。

以下代码片段展示了如何向 PDF 添加 StrikeOutAnnotation


    import aspose.pdf as ap

    document = ap.Document(input_file)

    strikeoutAnnotation = ap.annotations.StrikeOutAnnotation(
        document.pages[1], ap.Rectangle(299.988, 713.664, 308.708, 720.769, True)
    )
    strikeoutAnnotation.title = "Aspose 用户"
    strikeoutAnnotation.subject = "插入的文本 1"
    strikeoutAnnotation.flags = ap.annotations.AnnotationFlags.PRINT
    strikeoutAnnotation.color = ap.Color.blue

    document.pages[1].annotations.append(strikeoutAnnotation)
    document.save(output_file)

从 PDF 获取 StrikeOutAnnotation


    import aspose.pdf as ap

    document = ap.Document(input_file)
    StrikeoutAnnotations = [
        a
        for a in document.pages[1].annotations
        if (a.annotation_type == ap.annotations.AnnotationType.STRIKE_OUT)
    ]

    for pa in StrikeoutAnnotations:
        print(pa.rect)

从 PDF 中删除 StrikeOutAnnotation


    import aspose.pdf as ap

    document = ap.Document(input_file)
    StrikeoutAnnotations = [
        a
        for a in document.pages[1].annotations
        if (a.annotation_type == ap.annotations.AnnotationType.STRIKE_OUT)
    ]

    for pa in StrikeoutAnnotations:
        document.pages[1].annotations.delete(pa)

    document.save(output_file)