Bekerja dengan Tindakan
File PDF dapat berisi lampiran file yang tertanam dan seringkali perlu untuk membuat Hyperlink ke dokumen-dokumen tersebut. Anda dapat mengarahkan pembaca dari dokumen PDF utama ke lampiran PDF dengan membuat tautan dalam dokumen induk yang menunjuk ke lampiran.
Menambahkan Hyperlink dalam File PDF
Dimungkinkan untuk menambahkan hyperlink ke file PDF, baik untuk memungkinkan pembaca menavigasi ke bagian lain dari PDF, atau ke konten eksternal.
Untuk menambahkan hyperlink web ke dokumen PDF:
-
Buat objek Kelas Document.
-
Dapatkan Kelas Page yang ingin Anda tambahkan tautan ke dalamnya.
-
Buat objek LinkAnnotation menggunakan objek Page dan Rectangle. Objek rectangle digunakan untuk menentukan lokasi pada halaman di mana tautan harus ditambahkan.
-
Atur metode getAction ke objek GoToURIAction yang menentukan lokasi URI jarak jauh.
-
Untuk menampilkan teks hyperlink, tambahkan string teks pada lokasi yang mirip dengan di mana objek LinkAnnotation ditempatkan.
-
Untuk menambahkan teks bebas:
-
Buat sebuah objek FreeTextAnnotation. Itu juga menerima objek Page dan Rectangle sebagai argumen, sehingga memungkinkan untuk memberikan nilai yang sama seperti yang ditentukan terhadap konstruktor LinkAnnotation.
-
Menggunakan properti Contents dari objek FreeTextAnnotation, tentukan string yang harus ditampilkan dalam PDF keluaran.
-
Secara opsional, atur lebar batas dari objek LinkAnnotation dan FreeTextAnnotation menjadi 0 agar tidak muncul dalam dokumen PDF.
-
Setelah objek LinkAnnotation dan FreeTextAnnotation telah didefinisikan, tambahkan tautan ini ke koleksi Annotations dari objek Page.
-
Akhirnya, simpan PDF yang telah diperbarui menggunakan metode Save dari objek Document. Potongan kode berikut menunjukkan cara menambahkan hyperlink ke file PDF.
package com.aspose.pdf.examples;
import java.util.List;
import com.aspose.pdf.*;
public class ExampleActions {
private static String _dataDir = "/home/aspose/pdf-examples/Samples/Actions/";
private static String GetDataDir() {
String os = System.getProperty("os.name");
if (os.startsWith("Windows"))
_dataDir = "C:\\Samples\\Actions";
return _dataDir;
}
public static void AddHyperlinkInPDFFile() {
// Buka dokumen
Document document = new Document(GetDataDir() + "AddHyperlink.pdf");
// Buat tautan
Page page = document.getPages().get_Item(1);
// Buat objek anotasi tautan
LinkAnnotation link = new LinkAnnotation(page, new Rectangle(100, 100, 300, 300));
// Buat objek border untuk LinkAnnotation
Border border = new Border(link);
// Setel nilai lebar border sebagai 0
border.setWidth(0);
// Setel border untuk LinkAnnotation
link.setBorder(border);
// Tentukan jenis tautan sebagai URI jarak jauh
link.setAction(new GoToURIAction("www.aspose.com"));
// Tambahkan anotasi tautan ke koleksi anotasi halaman pertama file PDF
page.getAnnotations().add(link);
// Buat anotasi Teks Bebas
FreeTextAnnotation textAnnotation = new FreeTextAnnotation(page, new Rectangle(100, 100, 300, 300),
new DefaultAppearance(FontRepository.findFont("TimesNewRoman"), 10, java.awt.Color.BLUE));
// String yang akan ditambahkan sebagai teks bebas
textAnnotation.setContents("Link to Aspose website");
// Setel border untuk Anotasi Teks Bebas
textAnnotation.setBorder(border);
// Tambahkan anotasi Teks Bebas ke koleksi anotasi halaman pertama Dokumen
page.getAnnotations().add(textAnnotation);
// Simpan dokumen yang diperbarui
document.save(_dataDir + "AddHyperlink_out.pdf");
}
Buat Tautan ke halaman dalam PDF yang sama
Aspose.PDF untuk Java menyediakan fitur hebat untuk pembuatan PDF serta manipulasi PDF. Ini juga menawarkan fitur untuk menambahkan tautan ke halaman PDF dan tautan dapat mengarah ke halaman dalam file PDF lain, URL web, tautan untuk meluncurkan Aplikasi, atau bahkan tautan ke halaman dalam file PDF yang sama.
Untuk menambahkan hyperlink lokal, kita perlu membuat TextFragment sehingga tautan dapat dikaitkan dengan TextFragment. Kelas TextFragment memiliki metode bernama getHyperlink yang digunakan untuk mengaitkan instance LocalHyperlink. Potongan kode berikut menunjukkan langkah-langkah untuk memenuhi persyaratan ini.
public static void CreateHyperlinkToPagesInSamePDF() {
// Buat instance Dokumen
Document document = new Document();
// Tambahkan halaman ke koleksi halaman file PDF
Page page = document.getPages().add();
// Buat instance Text Fragment
TextFragment text = new TextFragment("tautan nomor halaman uji ke halaman 2");
// Buat instance hyperlink lokal
LocalHyperlink link = new LocalHyperlink();
// Tetapkan halaman target untuk instance tautan
link.setTargetPageNumber(2);
// Atur hyperlink TextFragment
text.setHyperlink(link);
// Tambahkan teks ke koleksi paragraf Halaman
page.getParagraphs().add(text);
// Buat instance TextFragment baru
text = new TextFragment("tautan nomor halaman uji ke halaman 1");
// TextFragment harus ditambahkan ke halaman baru
text.setInNewPage(true);
// Buat instance hyperlink lokal lainnya
link = new LocalHyperlink();
// Tetapkan halaman Target untuk hyperlink kedua
link.setTargetPageNumber(1);
// Atur tautan untuk TextFragment kedua
text.setHyperlink(link);
// Tambahkan teks ke koleksi paragraf objek halaman
page.getParagraphs().add(text);
// Simpan dokumen yang diperbarui
document.save(GetDataDir() + "CreateLocalHyperlink_out.pdf");
}
Mendapatkan Tujuan Hyperlink PDF (URL)
Tautan diwakili sebagai anotasi dalam file PDF dan dapat ditambahkan, diperbarui, atau dihapus. Aspose.PDF untuk Java juga mendukung mendapatkan tujuan (URL) dari hyperlink dalam file PDF.
Untuk mendapatkan URL tautan:
-
Buat objek Document.
-
Dapatkan Page yang ingin Anda ekstrak tautannya.
-
Gunakan kelas AnnotationSelector untuk mengekstrak semua objek LinkAnnotation dari halaman yang ditentukan.
-
Berikan objek AnnotationSelector ke metode Accept objek Page.
-
Dapatkan semua anotasi tautan yang dipilih ke dalam objek IList menggunakan properti Selected dari objek AnnotationSelector.
-
Akhirnya, ekstrak Tindakan LinkAnnotation sebagai GoToURIAction.
Cuplikan kode berikut menunjukkan cara mendapatkan tujuan hyperlink (URL) dari file PDF.
public static void GetPDFHyperlinkDestination() {
Document document = new Document(GetDataDir() + "Aspose-app-list.pdf");
// Ekstrak tindakan
Page page = document.getPages().get_Item(1);
AnnotationSelector selector = new AnnotationSelector(new LinkAnnotation(page, Rectangle.getTrivial()));
page.accept(selector);
List<Annotation> list = selector.getSelected();
// Iterasi melalui item individu di dalam daftar
if (list.size() == 0)
System.out.println("Tidak ada Hyperlink yang ditemukan..");
else {
// Loop melalui semua penanda buku
for (Annotation annot : list) {
LinkAnnotation la = (annot instanceof LinkAnnotation ? (LinkAnnotation) annot : null);
if (la != null) {
// Cetak URL tujuan
System.out.println("Tujuan: " + ((GoToURIAction) la.getAction()).getURI());
}
}
} // end else
}
Dapatkan Teks Hyperlink
Sebuah hyperlink memiliki dua bagian: teks yang muncul di dokumen, dan URL tujuan. Dalam beberapa kasus, teks tersebut yang kita butuhkan daripada URL.
Teks dan anotasi/tindakan dalam file PDF diwakili oleh entitas yang berbeda. Teks pada halaman hanyalah sekumpulan kata dan karakter, sementara anotasi membawa beberapa interaktivitas seperti yang ada dalam hyperlink.
Untuk menemukan konten URL, Anda perlu bekerja dengan anotasi dan teks. Objek Annotation tidak memiliki teks itu sendiri tetapi berada di bawah teks pada halaman. Jadi untuk mendapatkan teks, Annotation memberikan batasan URL, sementara objek Text memberikan konten URL. Silakan lihat potongan kode berikut.
public static void GetHyperlinkText() {
Document document = new Document(GetDataDir() + "Aspose-app-list.pdf");
// Ekstrak tindakan
Page page = document.getPages().get_Item(1);
for (Annotation annot : page.getAnnotations()) {
LinkAnnotation la = (annot instanceof LinkAnnotation ? (LinkAnnotation) annot : null);
if (la != null) {
// Cetak URL dari setiap Link Annotation
System.out.println("URI: " + ((GoToURIAction) la.getAction()).getURI());
TextAbsorber absorber = new TextAbsorber();
absorber.getTextSearchOptions().setLimitToPageBounds(true);
absorber.getTextSearchOptions().setRectangle(annot.getRect());
page.accept(absorber);
String extractedText = absorber.getText();
// Cetak teks terkait dengan hyperlink
System.out.println(extractedText);
}
}
}
Menghapus Aksi Buka Dokumen dari File PDF
Bagaimana Menentukan Halaman PDF saat Melihat Dokumen menjelaskan bagaimana memberitahu sebuah dokumen untuk dibuka pada halaman yang berbeda dari halaman pertama. Ketika menggabungkan beberapa dokumen, dan satu atau lebih memiliki aksi GoTo yang ditetapkan, Anda mungkin ingin menghapusnya. Misalnya, jika menggabungkan dua dokumen dan dokumen kedua memiliki aksi GoTo yang membawa Anda ke halaman kedua, dokumen keluaran akan terbuka pada halaman kedua dari dokumen kedua alih-alih halaman pertama dari dokumen gabungan. Untuk menghindari perilaku ini, hapus perintah aksi buka.
Untuk menghapus aksi buka:
- Atur metode getOpenAction dari objek Document ke null.
- Simpan PDF yang diperbarui menggunakan metode Save dari objek Document.
Potongan kode berikut menunjukkan cara menghapus aksi buka dokumen dari file PDF.
public static void RemoveDocumentOpenActionFromPDFFile()
{
// Buka dokumen
Document document = new Document(_dataDir + "RemoveOpenAction.pdf");
// Hapus aksi buka dokumen
document.setOpenAction(null);
// Simpan dokumen yang diperbarui
document.save(GetDataDir()+"RemoveOpenAction_out.pdf");
}
Cara Menentukan Halaman PDF saat Melihat Dokumen
Saat melihat file PDF di penampil PDF seperti Adobe Reader, file biasanya terbuka pada halaman pertama. Namun, dimungkinkan untuk mengatur file agar terbuka pada halaman yang berbeda.
Kelas XYZExplicitDestination memungkinkan Anda menentukan halaman dalam file PDF yang ingin Anda buka. Ketika melewatkan nilai objek GoToAction ke metode getOpenAction kelas Document, dokumen terbuka pada halaman yang ditentukan terhadap objek XYZExplicitDestination. Cuplikan kode berikut menunjukkan cara menentukan halaman sebagai tindakan buka dokumen.
public static void HowToSpecifyPDFPageWhenViewingDocument()
{
// Memuat file PDF
Document document = new Document(GetDataDir()+ "SpecifyPageWhenViewing.pdf");
// Mendapatkan instance dari halaman kedua dokumen
Page page2 = document.getPages().get_Item(2);
// Membuat variabel untuk mengatur faktor zoom dari halaman target
double zoom = 1;
// Membuat instance GoToAction
GoToAction action = new GoToAction(page2);
// Menuju halaman ke-2
action.setDestination (new XYZExplicitDestination(page2, 0, page2.getRect().getHeight(), zoom));
// Mengatur tindakan pembukaan dokumen
document.setOpenAction (action);
// Menyimpan dokumen yang diperbarui
document.save(_dataDir + "goto2page_out.pdf");
}
}