Markup Annotations menggunakan Python
Artikel ini menunjukkan cara bekerja dengan anotasi markup dalam dokumen PDF menggunakan Aspose.PDF for Python via .NET.
Skrip contoh menampilkan tiga alur kerja anotasi umum:
- anotasi teks untuk komentar bergaya catatan
- anotasi caret untuk penanda sisipan
- ganti anotasi untuk markup penggantian teks
Anotasi Teks
Tambahkan Anotasi Teks
Contoh ini membuat anotasi teks pada halaman pertama dan menautkannya ke jendela popup. Anotasi teks berguna untuk komentar gaya catatan tempel dalam alur kerja tinjauan.
Buka PDF sumber
document = ap.Document(infile)
Buat dan konfigurasikan anotasi teks
Tentukan persegi panjang anotasi dan atur judul, subjek, isi, flag tampilan, warna, serta ikon.
text_annotation = ap.annotations.TextAnnotation(
document.pages[1],
ap.Rectangle(299.988, 613.664, 428.708, 680.769, True),
)
text_annotation.title = "Aspose User"
text_annotation.subject = "Sticky Note"
text_annotation.contents = (
"This is a text annotation added by Aspose.PDF for Python via .NET"
)
text_annotation.flags = ap.annotations.AnnotationFlags.PRINT
text_annotation.color = ap.Color.blue
text_annotation.icon = ap.annotations.TextIcon.HELP
Buat anotasi pop-up
Buat jendela popup dan hubungkan ke anotasi teks.
popup = ap.annotations.PopupAnnotation(
document.pages[1],
ap.Rectangle(428.708, 613.664, 528.708, 713.664, True),
)
popup.open = True
text_annotation.popup = popup
Tambahkan anotasi dan simpan PDF
document.pages[1].annotations.add(text_annotation, consider_rotation=False)
document.save(outfile)
Contoh lengkap
def text_annotation_add(infile, outfile):
document = ap.Document(infile)
text_annotation = ap.annotations.TextAnnotation(
document.pages[1],
ap.Rectangle(299.988, 613.664, 428.708, 680.769, True),
)
text_annotation.title = "Aspose User"
text_annotation.subject = "Sticky Note"
text_annotation.contents = (
"This is a text annotation added by Aspose.PDF for Python via .NET"
)
text_annotation.flags = ap.annotations.AnnotationFlags.PRINT
text_annotation.color = ap.Color.blue
text_annotation.icon = ap.annotations.TextIcon.HELP
popup = ap.annotations.PopupAnnotation(
document.pages[1],
ap.Rectangle(428.708, 613.664, 528.708, 713.664, True),
)
popup.open = True
text_annotation.popup = popup
document.pages[1].annotations.add(text_annotation, consider_rotation=False)
document.save(outfile)
Dapatkan Anotasi Teks
Untuk memeriksa anotasi teks yang ada, saring koleksi anotasi pada halaman pertama dan pertahankan hanya item yang tipenya adalah TEXT.
Muat dokumen dan kumpulkan anotasi teks
document = ap.Document(infile)
text_annotations = [
annotation
for annotation in document.pages[1].annotations
if annotation.annotation_type == ap.annotations.AnnotationType.TEXT
]
Cetak persegi panjang anotasi
for annotation in text_annotations:
print(annotation.rect)
Contoh lengkap
def text_annotation_get(infile, outfile):
document = ap.Document(infile)
text_annotations = [
annotation
for annotation in document.pages[1].annotations
if annotation.annotation_type == ap.annotations.AnnotationType.TEXT
]
for annotation in text_annotations:
print(annotation.rect)
Hapus Anotasi Teks
Alur kerja ini menghapus semua anotasi teks dari halaman pertama dan menyimpan PDF yang telah dimodifikasi.
Temukan anotasi teks untuk dihapus
document = ap.Document(infile)
text_annotations = [
annotation
for annotation in document.pages[1].annotations
if annotation.annotation_type == ap.annotations.AnnotationType.TEXT
]
Hapus anotasi dan simpan file
for annotation in text_annotations:
document.pages[1].annotations.delete(annotation)
document.save(outfile)
Contoh lengkap
def text_annotation_delete(infile, outfile):
document = ap.Document(infile)
text_annotations = [
annotation
for annotation in document.pages[1].annotations
if annotation.annotation_type == ap.annotations.AnnotationType.TEXT
]
for annotation in text_annotations:
document.pages[1].annotations.delete(annotation)
document.save(outfile)
Anotasi Caret
Tambahkan Anotasi Caret
Annotasi caret digunakan untuk menandai titik sisipan dalam skenario tinjauan. Contoh ini menambahkan annotasi caret dengan catatan popup yang terlampir.
Buka dokumen dan dapatkan halaman target
document = ap.Document(infile)
page = document.pages[1]
Buat dan konfigurasikan anotasi caret
caret_annotation = ap.annotations.CaretAnnotation(
page, ap.Rectangle(299.988, 713.664, 308.708, 720.769, True)
)
caret_annotation.title = "Aspose User"
caret_annotation.subject = "Inserted text 1"
caret_annotation.flags = ap.annotations.AnnotationFlags.PRINT
caret_annotation.color = ap.Color.blue
Lampirkan popup dan simpan dokumen
caret_annotation.popup = ap.annotations.PopupAnnotation(
page, ap.Rectangle(310, 713, 410, 730, True)
)
page.annotations.append(caret_annotation)
document.save(outfile)
Contoh lengkap
def caret_annotations_add(infile, outfile):
document = ap.Document(infile)
page = document.pages[1]
caret_annotation = ap.annotations.CaretAnnotation(
page, ap.Rectangle(299.988, 713.664, 308.708, 720.769, True)
)
caret_annotation.title = "Aspose User"
caret_annotation.subject = "Inserted text 1"
caret_annotation.flags = ap.annotations.AnnotationFlags.PRINT
caret_annotation.color = ap.Color.blue
caret_annotation.popup = ap.annotations.PopupAnnotation(
page, ap.Rectangle(310, 713, 410, 730, True)
)
page.annotations.append(caret_annotation)
document.save(outfile)
Dapatkan Anotasi Caret
Untuk memeriksa anotasi caret, iterasi melalui anotasi halaman dan filter berdasarkan CARET jenis anotasi.
Muat dokumen dan halaman
document = ap.Document(infile)
page = document.pages[1]
Cetak persegi panjang anotasi caret
for annot in page.annotations:
if annot.annotation_type == ap.annotations.AnnotationType.CARET:
print(annot.rect)
Contoh lengkap
def caret_annotations_get(infile, outfile):
document = ap.Document(infile)
page = document.pages[1]
for annot in page.annotations:
if annot.annotation_type == ap.annotations.AnnotationType.CARET:
print(annot.rect)
Hapus Anotasi Caret
Alur kerja ini mengumpulkan anotasi caret terlebih dahulu, menghapusnya satu per satu, dan kemudian menyimpan file yang diperbarui.
Muat dokumen dan kumpulkan anotasi caret
document = ap.Document(infile)
page = document.pages[1]
caret_annotations = [
annot
for annot in page.annotations
if annot.annotation_type == ap.annotations.AnnotationType.CARET
]
Hapus anotasi dan simpan dokumen
for annot in caret_annotations:
page.annotations.delete(annot)
document.save(outfile)
Contoh lengkap
def caret_annotations_delete(infile, outfile):
document = ap.Document(infile)
page = document.pages[1]
caret_annotations = [
annot
for annot in page.annotations
if annot.annotation_type == ap.annotations.AnnotationType.CARET
]
for annot in caret_annotations:
page.annotations.delete(annot)
document.save(outfile)
Ganti Anotasi
Tambah Ganti Anotasi
Anotasi penggantian menggabungkan anotasi caret dan anotasi coret yang dikelompokkan. Pola ini menandai teks yang harus diganti dan menautkan catatan pengganti ke konten yang dicoret.
Buka dokumen dan dapatkan halaman
document = ap.Document(infile)
page = document.pages[1]
Buat anotasi caret untuk teks pengganti
caret_annotation = ap.annotations.CaretAnnotation(
page, ap.Rectangle(361.246, 727.908, 370.081, 735.107, True)
)
caret_annotation.flags = ap.annotations.AnnotationFlags.PRINT
caret_annotation.subject = "Inserted text 2"
caret_annotation.title = "Aspose User"
caret_annotation.color = ap.Color.blue
caret_annotation.popup = ap.annotations.PopupAnnotation(
page, ap.Rectangle(310, 713, 410, 730, True)
)
Buat anotasi coret berkelompok
Tentukan area coret, tetapkan titik kuad, dan tautkan ke anotasi caret melalui in_reply_to dan reply_type.
strikeout_annotation = ap.annotations.StrikeOutAnnotation(
page, ap.Rectangle(318.407, 727.826, 368.916, 740.098, True)
)
strikeout_annotation.color = ap.Color.blue
strikeout_annotation.quad_points = [
ap.Point(321.66, 739.416),
ap.Point(365.664, 739.416),
ap.Point(321.66, 728.508),
ap.Point(365.664, 728.508),
]
strikeout_annotation.subject = "Cross-out"
strikeout_annotation.in_reply_to = caret_annotation
strikeout_annotation.reply_type = ap.annotations.ReplyType.GROUP
Tambahkan kedua anotasi dan simpan PDF
page.annotations.append(caret_annotation)
page.annotations.append(strikeout_annotation)
document.save(outfile)
Contoh lengkap
def replace_annotations_add(infile, outfile):
document = ap.Document(infile)
page = document.pages[1]
caret_annotation = ap.annotations.CaretAnnotation(
page, ap.Rectangle(361.246, 727.908, 370.081, 735.107, True)
)
caret_annotation.flags = ap.annotations.AnnotationFlags.PRINT
caret_annotation.subject = "Inserted text 2"
caret_annotation.title = "Aspose User"
caret_annotation.color = ap.Color.blue
caret_annotation.popup = ap.annotations.PopupAnnotation(
page, ap.Rectangle(310, 713, 410, 730, True)
)
strikeout_annotation = ap.annotations.StrikeOutAnnotation(
page, ap.Rectangle(318.407, 727.826, 368.916, 740.098, True)
)
strikeout_annotation.color = ap.Color.blue
strikeout_annotation.quad_points = [
ap.Point(321.66, 739.416),
ap.Point(365.664, 739.416),
ap.Point(321.66, 728.508),
ap.Point(365.664, 728.508),
]
strikeout_annotation.subject = "Cross-out"
strikeout_annotation.in_reply_to = caret_annotation
strikeout_annotation.reply_type = ap.annotations.ReplyType.GROUP
page.annotations.append(caret_annotation)
page.annotations.append(strikeout_annotation)
document.save(outfile)
Ambil Ganti Anotasi
Untuk mengidentifikasi anotasi pengganti, temukan anotasi coret yang dikelompokkan sebagai balasan ke anotasi lain. Contoh tersebut melakukan casting pada setiap anotasi coret sebelum memeriksa field hubungan nya.
Muat dokumen dan iterasi melalui anotasi
document = ap.Document(infile)
page = document.pages[1]
Saring anotasi coret yang dikelompokkan
for annot in page.annotations:
if annot.annotation_type == ap.annotations.AnnotationType.STRIKE_OUT:
sa = cast(ap.annotations.StrikeOutAnnotation, annot)
if (
sa.in_reply_to is not None
and sa.reply_type == ap.annotations.ReplyType.GROUP
):
print(f"Replace annotation rect: {sa.rect}")
Contoh lengkap
def replace_annotations_get(infile, outfile):
document = ap.Document(infile)
page = document.pages[1]
for annot in page.annotations:
if annot.annotation_type == ap.annotations.AnnotationType.STRIKE_OUT:
sa = cast(ap.annotations.StrikeOutAnnotation, annot)
if (
sa.in_reply_to is not None
and sa.reply_type == ap.annotations.ReplyType.GROUP
):
print(f"Replace annotation rect: {sa.rect}")
Hapus Ganti Anotasi
Alur kerja ini mengumpulkan anotasi coret yang digunakan untuk mengganti markup, menghapusnya dari halaman, dan menyimpan PDF output.
Muat dokumen dan kumpulkan anotasi pengganti
document = ap.Document(infile)
page = document.pages[1]
replace_annotations = [
cast(ap.annotations.StrikeOutAnnotation, annot)
for annot in page.annotations
if annot.annotation_type == ap.annotations.AnnotationType.STRIKE_OUT
]
Hapus anotasi dan simpan dokumen
for annot in replace_annotations:
page.annotations.delete(annot)
document.save(outfile)
Contoh lengkap
def replace_annotations_delete(infile, outfile):
document = ap.Document(infile)
page = document.pages[1]
replace_annotations = [
cast(ap.annotations.StrikeOutAnnotation, annot)
for annot in page.annotations
if annot.annotation_type == ap.annotations.AnnotationType.STRIKE_OUT
]
for annot in replace_annotations:
page.annotations.delete(annot)
document.save(outfile)