Anotasi Interaktif menggunakan Python
Artikel ini menunjukkan cara bekerja dengan anotasi interaktif dalam dokumen PDF menggunakan Aspose.PDF for Python via .NET.
Skrip contoh menunjukkan beberapa alur kerja umum:
- tambahkan anotasi tautan ke teks yang ada
- dapatkan persegi panjang anotasi tautan dari sebuah halaman
- hapus anotasi tautan
- buat tombol navigasi
- buat tombol cetak
Anotasi Tautan
Tambahkan Anotasi Tautan
Contoh ini mencari fragmen teks pada halaman pertama. "file" dan menempatkan anotasi tautan yang dapat diklik di atas area teks yang cocok. Ketika pengguna mengklik anotasi tersebut, PDF membuka alamat web yang ditentukan.
Muat dokumen dan temukan teks target
Buat sebuah Document objek dan gunakan TextFragmentAbsorber untuk mencari teks yang akan menjadi interaktif.
document = ap.Document(infile)
text_fragment_absorber = ap.text.TextFragmentAbsorber("file")
document.pages[1].accept(text_fragment_absorber)
phone_number_fragment = text_fragment_absorber.text_fragments[1]
Buat anotasi tautan
Bangun sebuah LinkAnnotation menggunakan persegi panjang dari fragmen teks yang cocok dan menetapkan aksi URI padanya.
link_annotation = ap.annotations.LinkAnnotation(
document.pages[1], phone_number_fragment.rectangle
)
link_annotation.action = ap.annotations.GoToURIAction("https://www.aspose.com")
Tambahkan anotasi dan simpan PDF
Tambahkan anotasi ke halaman dan simpan file yang diperbarui.
document.pages[1].annotations.append(link_annotation)
document.save(outfile)
Contoh lengkap
def link_add(infile, outfile):
document = ap.Document(infile)
text_fragment_absorber = ap.text.TextFragmentAbsorber("file")
document.pages[1].accept(text_fragment_absorber)
phone_number_fragment = text_fragment_absorber.text_fragments[1]
link_annotation = ap.annotations.LinkAnnotation(
document.pages[1], phone_number_fragment.rectangle
)
link_annotation.action = ap.annotations.GoToURIAction("https://www.aspose.com")
document.pages[1].annotations.append(link_annotation)
document.save(outfile)
Dapatkan Anotasi Tautan
Untuk memeriksa tautan interaktif yang ada, filter koleksi anotasi pada halaman pertama dan pertahankan hanya item yang tipenya adalah LINK. Contoh kemudian mencetak persegi panjang untuk tiap anotasi yang cocok.
Muat PDF dan kumpulkan anotasi tautan
document = ap.Document(infile)
link_annotations = [
a
for a in document.pages[1].annotations
if (a.annotation_type == ap.annotations.AnnotationType.LINK)
]
Baca persegi panjang anotasi
Loop melalui anotasi yang difilter dan cetak koordinat setiap area tautan.
for link_annotation in link_annotations:
print(link_annotation.rect)
Contoh lengkap
def link_get(infile, outfile):
document = ap.Document(infile)
link_annotations = [
a
for a in document.pages[1].annotations
if (a.annotation_type == ap.annotations.AnnotationType.LINK)
]
for link_annotation in link_annotations:
print(link_annotation.rect)
Hapus Anotasi Tautan
Alur kerja ini menghapus semua anotasi tautan dari halaman pertama dan menyimpan PDF yang telah dibersihkan sebagai file baru.
Temukan anotasi tautan untuk dihapus
document = ap.Document(infile)
link_annotations = [
a
for a in document.pages[1].annotations
if (a.annotation_type == ap.annotations.AnnotationType.LINK)
]
Hapus setiap anotasi tautan
for link_annotation in link_annotations:
document.pages[1].annotations.delete(link_annotation)
Simpan dokumen yang diperbarui
document.save(outfile)
Contoh lengkap
def link_delete(infile, outfile):
document = ap.Document(infile)
link_annotations = [
a
for a in document.pages[1].annotations
if (a.annotation_type == ap.annotations.AnnotationType.LINK)
]
for link_annotation in link_annotations:
document.pages[1].annotations.delete(link_annotation)
document.save(outfile)
Anotasi Widget
Tambah Tombol Navigasi
Tombol navigasi berguna dalam PDF multi-halaman ketika Anda ingin pembaca berpindah antar halaman tanpa menggunakan antarmuka penampil. Contoh ini menambahkan Previous Page dan Next Page tombol ke setiap halaman.
Tentukan pengaturan tombol
Simpan keterangan tombol, posisi, dan aksi yang telah ditentukan dalam daftar konfigurasi sederhana.
button_config = [
("Previous Page", 120.0, ap.annotations.PredefinedAction.PREV_PAGE),
("Next Page", 230.0, ap.annotations.PredefinedAction.NEXT_PAGE),
]
Muat PDF dan pastikan ada beberapa halaman
Contoh membuka dokumen sumber dan menambahkan satu halaman lagi sehingga tindakan navigasi memiliki setidaknya dua halaman untuk diproses.
document = ap.Document(infile)
document.pages.add()
Buat tombol pada setiap halaman
Untuk setiap halaman, buat sebuah ButtonField, atur teks dan warnanya, tetapkan aksi navigasi yang telah ditentukan, dan tambahkan ke formulir.
for page in document.pages:
for name, x_pos, action in button_config:
rect = ap.Rectangle(x_pos, 10.0, x_pos + 100, 40.0, True)
button = ap.forms.ButtonField(page, rect)
button.partial_name = name
button.value = name
button.characteristics.border = ap.Color.red.to_rgb()
button.characteristics.background = ap.Color.orange.to_rgb()
button.actions.on_release_mouse_btn = ap.annotations.NamedAction(action)
document.form.add(button)
Simpan hasil
document.save(outfile)
Contoh lengkap
def navigation_buttons_add(infile, outfile):
button_config = [
("Previous Page", 120.0, ap.annotations.PredefinedAction.PREV_PAGE),
("Next Page", 230.0, ap.annotations.PredefinedAction.NEXT_PAGE),
]
document = ap.Document(infile)
document.pages.add()
for page in document.pages:
for name, x_pos, action in button_config:
rect = ap.Rectangle(x_pos, 10.0, x_pos + 100, 40.0, True)
button = ap.forms.ButtonField(page, rect)
button.partial_name = name
button.value = name
button.characteristics.border = ap.Color.red.to_rgb()
button.characteristics.background = ap.Color.orange.to_rgb()
button.actions.on_release_mouse_btn = ap.annotations.NamedAction(action)
document.form.add(button)
document.save(outfile)
Tambah Tombol Cetak
Contoh ini membuat PDF satu halaman baru dan menempatkan tombol cetak di dekat bagian atas halaman. Mengklik tombol tersebut memicu aksi cetak yang telah ditentukan dalam penampil PDF yang kompatibel.
Buat PDF baru dan tambahkan halaman
document = ap.Document()
page = document.pages.add()
Buat dan konfigurasikan tombol
Tentukan persegi panjang tombol, buat ButtonField, atur caption-nya, dan lampirkan aksi cetak.
rect = ap.Rectangle(72, 748, 164, 768, True)
print_button = ap.forms.ButtonField(page, rect)
print_button.alternate_name = "Print current document"
print_button.color = ap.Color.black
print_button.partial_name = "printBtn1"
print_button.value = "Print Document"
print_button.actions.on_release_mouse_btn = ap.annotations.NamedAction(
ap.annotations.PredefinedAction.FILE_PRINT
)
Atur gaya batas dan latar belakang
Contoh ini mendefinisikan batas padat dan menerapkan warna khusus agar tombol terlihat dalam dokumen.
border = ap.annotations.Border(print_button)
border.style = ap.annotations.BorderStyle.SOLID
border.width = 2
print_button.border = border
print_button.characteristics.border = ap.Color.blue.to_rgb()
print_button.characteristics.background = ap.Color.light_blue.to_rgb()
Tambahkan tombol dan simpan PDF
document.form.add(print_button)
document.save(outfile)
Contoh lengkap
def print_button_add(infile, outfile):
document = ap.Document()
page = document.pages.add()
rect = ap.Rectangle(72, 748, 164, 768, True)
print_button = ap.forms.ButtonField(page, rect)
print_button.alternate_name = "Print current document"
print_button.color = ap.Color.black
print_button.partial_name = "printBtn1"
print_button.value = "Print Document"
print_button.actions.on_release_mouse_btn = ap.annotations.NamedAction(
ap.annotations.PredefinedAction.FILE_PRINT
)
border = ap.annotations.Border(print_button)
border.style = ap.annotations.BorderStyle.SOLID
border.width = 2
print_button.border = border
print_button.characteristics.border = ap.Color.blue.to_rgb()
print_button.characteristics.background = ap.Color.light_blue.to_rgb()
document.form.add(print_button)
document.save(outfile)