PDFBox - Panduan Cepat
Portable Document Format (PDF) adalah format file yang membantu menyajikan data dengan cara yang tidak tergantung pada perangkat lunak Aplikasi, perangkat keras, dan sistem operasi.
Setiap file PDF menyimpan deskripsi dokumen datar tata letak tetap, termasuk teks, font, grafik, dan informasi lain yang diperlukan untuk menampilkannya.
Ada beberapa perpustakaan yang tersedia untuk membuat dan memanipulasi dokumen PDF melalui program, seperti -
Adobe PDF Library - Perpustakaan ini menyediakan API dalam bahasa seperti C ++, .NET dan Java dan menggunakan ini kita dapat mengedit, melihat cetak dan mengekstrak teks dari dokumen PDF.
Formatting Objects Processor- Pemformat cetak sumber terbuka yang digerakkan oleh Objek Pemformatan XSL dan pemformat independen keluaran. Target keluaran utama adalah PDF.
iText - Library ini menyediakan API dalam bahasa seperti Java, C #, dan bahasa .NET lainnya dan menggunakan library ini kita dapat membuat dan memanipulasi dokumen PDF, RTF, dan HTML.
JasperReports - Ini adalah alat pelaporan Java yang menghasilkan laporan dalam dokumen PDF termasuk Microsoft Excel, RTF, ODT, nilai yang dipisahkan koma, dan file XML.
Apa itu PDFBox
Apache PDFBox adalah pustaka Java sumber terbuka yang mendukung pengembangan dan konversi dokumen PDF. Dengan menggunakan pustaka ini, Anda dapat mengembangkan program Java yang membuat, mengonversi, dan memanipulasi dokumen PDF.
Selain itu, PDFBox juga menyertakan utilitas baris perintah untuk melakukan berbagai operasi melalui PDF menggunakan file Jar yang tersedia.
Fitur PDFBox
Berikut adalah fitur-fitur penting dari PDFBox -
Extract Text - Menggunakan PDFBox, Anda dapat mengekstrak teks Unicode dari file PDF.
Split & Merge - Menggunakan PDFBox, Anda dapat membagi satu file PDF menjadi beberapa file, dan menggabungkannya kembali sebagai satu file.
Fill Forms - Menggunakan PDFBox, Anda dapat mengisi data formulir di dokumen.
Print - Menggunakan PDFBox, Anda dapat mencetak file PDF menggunakan API pencetakan Java standar.
Save as Image - Menggunakan PDFBox, Anda dapat menyimpan PDF sebagai file gambar, seperti PNG atau JPEG.
Create PDFs - Menggunakan PDFBox, Anda dapat membuat file PDF baru dengan membuat program Java dan, Anda juga dapat menyertakan gambar dan font.
Signing- Menggunakan PDFBox, Anda dapat menambahkan tanda tangan digital ke file PDF.
Aplikasi PDFBox
Berikut ini adalah aplikasi PDFBox -
Apache Nutch- Apache Nutch adalah perangkat lunak pencarian web sumber terbuka. Itu dibangun di atas Apache Lucene, menambahkan khusus web, seperti crawler, database grafik tautan, parser untuk HTML dan format dokumen lainnya, dll.
Apache Tika - Apache Tika adalah toolkit untuk mendeteksi dan mengekstrak metadata dan konten teks terstruktur dari berbagai dokumen menggunakan pustaka parser yang ada.
Komponen PDFBox
Berikut ini adalah empat komponen utama PDFBox -
PDFBox- Ini adalah bagian utama dari PDFBox. Ini berisi kelas dan antarmuka yang terkait dengan ekstraksi dan manipulasi konten.
FontBox - Ini berisi kelas dan antarmuka yang terkait dengan font, dan menggunakan kelas ini kita dapat memodifikasi font teks dokumen PDF.
XmpBox - Ini berisi kelas dan antarmuka yang menangani metadata XMP.
Preflight - Komponen ini digunakan untuk memverifikasi file PDF terhadap standar PDF / A-1b.
Menginstal PDFBox
Berikut langkah-langkah untuk mendownload Apache PDFBox -
Step 1 - Buka beranda Apache PDFBox dengan mengklik link berikut - https://pdfbox.apache.org/
Step 2 - Tautan di atas akan mengarahkan Anda ke beranda seperti yang ditunjukkan pada tangkapan layar berikut -
Step 3 - Sekarang, klik Downloadstautan yang disorot pada tangkapan layar di atas. Saat mengklik, Anda akan diarahkan ke halaman unduhan PDFBox seperti yang ditunjukkan pada tangkapan layar berikut.
Step 4- Di halaman Unduhan, Anda akan melihat tautan untuk PDFBox. Klik pada link masing-masing untuk rilis terbaru. Misalnya, kami memilihPDFBox 2.0.1 dan saat mengklik ini, Anda akan diarahkan ke file jar yang diperlukan seperti yang ditunjukkan pada gambar berikut.
Step 5 - Unduh file jar pdfbox-2.0.1.jar, fontbox-2.0.1.jar, preflight-2.0.1.jar, xmpbox-2.0.1.jar dan, pdfbox-tools-2.0.1.jar.
Instalasi Eclipse
Setelah mengunduh file jar yang diperlukan, Anda harus menyematkan file JAR ini ke lingkungan Eclipse Anda. Anda dapat melakukan ini dengan mengatur jalur Build ke file JAR ini dan dengan menggunakanpom.xml.
Menyetel Jalur Bangun
Berikut adalah langkah-langkah untuk menginstal PDFBox di Eclipse -
Step 1- Pastikan Anda telah menginstal Eclipse di sistem Anda. Jika tidak, unduh dan instal Eclipse di sistem Anda.
Step 2 - Buka Eclipse, klik File, New, dan Buka proyek baru seperti yang ditunjukkan pada gambar berikut.
Step 3 - Saat memilih proyek, Anda akan mendapatkan New ProjectPenyihir. Di wizard ini, pilih proyek Java dan lanjutkan dengan mengklikNext tombol seperti yang ditunjukkan pada tangkapan layar berikut.
Step 4 - Saat melanjutkan, Anda akan diarahkan ke New Java Project wizard. Buat proyek baru dan klikNext seperti yang ditunjukkan pada tangkapan layar berikut.
Step 5- Setelah membuat proyek baru, klik kanan padanya; PilihBuild Path dan klik Configure Build Path… seperti yang ditunjukkan pada tangkapan layar berikut.
Step 6 - Saat mengklik Build Path opsi Anda akan diarahkan ke Java Build Path wizard. PilihAdd External JARs seperti yang ditunjukkan pada tangkapan layar berikut.
Step 7 - Pilih file jar fontbox-2.0.1.jar, pdfbox-2.0.1.jar, pdfbox-tools-2.0.1.jar, preflight-2.0.1.jar, xmpbox-2.0.1.jar seperti yang ditunjukkan pada tangkapan layar berikut.
Step 8 - Saat mengklik Open pada gambar di atas, file-file itu akan ditambahkan ke perpustakaan Anda seperti yang ditunjukkan pada gambar berikut.
Step 9 - Saat mengklik OK, Anda akan berhasil menambahkan file JAR yang diperlukan ke proyek saat ini dan Anda dapat memverifikasi perpustakaan yang ditambahkan ini dengan memperluas Perpustakaan yang Dirujuk seperti yang ditunjukkan pada tangkapan layar berikut.
Menggunakan pom.xml
Ubah proyek menjadi proyek maven dan tambahkan konten berikut ke dalamnya pom.xml.
<project xmlns="https://maven.apache.org/POM/4.0.0"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>my_project</groupId>
<artifactId>my_project</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>fontbox</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>jempbox</artifactId>
<version>1.8.11</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>xmpbox</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>preflight</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox-tools</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies>
</project>
Mari kita sekarang memahami cara membuat dokumen PDF menggunakan perpustakaan PDFBox.
Membuat Dokumen PDF Kosong
Anda dapat membuat Dokumen PDF kosong dengan membuat instance PDDocumentkelas. Anda dapat menyimpan dokumen di lokasi yang Anda inginkan menggunakanSave() metode.
Berikut langkah-langkah membuat dokumen PDF kosong.
Langkah 1: Membuat Dokumen Kosong
Itu PDDocument kelas yang termasuk dalam paket org.apache.pdfbox.pdmodel, adalah representasi PDFDocument dalam memori. Oleh karena itu, dengan membuat instance kelas ini, Anda dapat membuat PDFDocument kosong seperti yang diperlihatkan di blok kode berikut.
PDDocument document = new PDDocument();
Langkah 2: Menyimpan Dokumen
Setelah membuat dokumen, Anda perlu menyimpan dokumen ini di jalur yang diinginkan, Anda dapat melakukannya menggunakan Save() metode dari PDDocumentkelas. Metode ini menerima nilai string, yang mewakili jalur tempat Anda ingin menyimpan dokumen, sebagai parameter. Berikut adalah prototipe dari metode save () dariPDDocument kelas.
document.save("Path");
Langkah 3: Menutup Dokumen
Saat tugas Anda selesai, pada akhirnya, Anda harus menutup file PDDocument objek menggunakan close ()metode. Berikut adalah prototipe dari metode close ()PDDocument kelas.
document.close();
Contoh
Contoh ini menunjukkan pembuatan Dokumen PDF. Di sini, kami akan membuat program Java untuk menghasilkan dokumen PDF bernamamy_doc.pdf dan menyimpannya di jalan C:/PdfBox_Examples/. Simpan kode ini dalam file dengan namaDocument_Creation.java.
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
public class Document_Creation {
public static void main (String args[]) throws IOException {
//Creating PDF document object
PDDocument document = new PDDocument();
//Saving the document
document.save("C:/PdfBox_Examples/my_doc.pdf");
System.out.println("PDF created");
//Closing the document
document.close();
}
}
Kompilasi dan jalankan file Java yang disimpan dari command prompt menggunakan perintah berikut.
javac Document_Creation.java
java Document_Creation
Setelah dieksekusi, program di atas membuat dokumen PDF yang menampilkan pesan berikut.
PDF created
Jika Anda memverifikasi jalur yang ditentukan, Anda dapat menemukan dokumen PDF yang dibuat seperti yang ditunjukkan di bawah ini.
Karena ini adalah dokumen kosong, jika Anda mencoba membuka dokumen ini, ini memberi Anda prompt yang menampilkan pesan kesalahan seperti yang ditunjukkan pada tangkapan layar berikut.
Pada bab sebelumnya, kita telah melihat bagaimana membuat dokumen PDF. Setelah membuat dokumen PDF, Anda perlu menambahkan halaman ke dalamnya. Mari kita sekarang memahami cara menambahkan halaman dalam dokumen PDF.
Menambahkan Halaman ke Dokumen PDF
Anda dapat membuat halaman kosong dengan membuat instance PDPage kelas dan menambahkannya ke dokumen PDF menggunakan addPage() metode dari PDDocument kelas.
Berikut adalah langkah-langkah untuk membuat dokumen kosong dan menambahkan halaman ke dalamnya.
Langkah 1: Membuat Dokumen Kosong
Buat dokumen PDF kosong dengan membuat instance PDDocument kelas seperti yang ditunjukkan di bawah ini.
PDDocument document = new PDDocument();
Langkah 2: Membuat Halaman Kosong
Itu PDPage kelas mewakili halaman di PDF Oleh karena itu, Anda dapat membuat halaman kosong dengan membuat instance kelas ini seperti yang ditunjukkan pada blok kode berikut.
PDPage my_page = new PDPage();
Langkah 3: Menambahkan Halaman ke Dokumen
Anda dapat menambahkan halaman ke dokumen PDF menggunakan addPage() metode dari PDDocumentkelas. Untuk metode ini Anda harus melewatkan objek PDPage sebagai parameter.
Oleh karena itu, tambahkan halaman kosong yang dibuat pada langkah sebelumnya ke objek PDDocument seperti yang diperlihatkan di blok kode berikut.
document.addPage(my_page);
Dengan cara ini Anda dapat menambahkan halaman sebanyak yang Anda inginkan ke dokumen PDF.
Langkah 4: Menyimpan Dokumen
Setelah menambahkan semua halaman, simpan dokumen PDF menggunakan save() metode dari PDDocument kelas seperti yang ditunjukkan pada blok kode berikut.
document.save("Path");
Langkah 5: Menutup Dokumen
Terakhir tutup dokumen menggunakan close() metode dari PDDocument kelas seperti yang ditunjukkan di bawah ini.
document.close();
Contoh
Contoh ini menunjukkan cara membuat Dokumen PDF dan menambahkan halaman ke dalamnya. Di sini kita akan membuat Dokumen PDF bernamamy_doc.pdf dan selanjutnya tambahkan 10 halaman kosong ke dalamnya, dan simpan di jalur C:/PdfBox_Examples/. Simpan kode ini dalam file dengan namaAdding_pages.java.
package document;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
public class Adding_Pages {
public static void main(String args[]) throws IOException {
//Creating PDF document object
PDDocument document = new PDDocument();
for (int i=0; i<10; i++) {
//Creating a blank page
PDPage blankPage = new PDPage();
//Adding the blank page to the document
document.addPage( blankPage );
}
//Saving the document
document.save("C:/PdfBox_Examples/my_doc.pdf");
System.out.println("PDF created");
//Closing the document
document.close();
}
}
Kompilasi dan jalankan file Java yang disimpan dari command prompt menggunakan perintah berikut -
javac Adding_pages.java
java Adding_pages
Setelah eksekusi, program di atas membuat dokumen PDF dengan halaman kosong yang menampilkan pesan berikut -
PDF created
Jika Anda memverifikasi jalur yang ditentukan, Anda dapat menemukan dokumen PDF yang dibuat seperti yang ditunjukkan pada tangkapan layar berikut.
Pada contoh sebelumnya, Anda telah melihat cara membuat dokumen baru dan menambahkan halaman ke dalamnya. Bab ini mengajarkan Anda cara memuat dokumen PDF yang sudah ada di sistem Anda, dan menjalankan beberapa pengoperasian di dalamnya.
Memuat Dokumen PDF yang Ada
Itu load() metode dari PDDocumentkelas digunakan untuk memuat dokumen PDF yang ada. Ikuti langkah-langkah yang diberikan di bawah ini untuk memuat dokumen PDF yang ada.
Langkah 1: Memuat Dokumen PDF yang Ada
Muat dokumen PDF yang ada menggunakan metode statis load() dari PDDocumentkelas. Metode ini menerima objek file sebagai parameter, karena ini adalah metode statis Anda dapat memanggilnya menggunakan nama kelas seperti yang ditunjukkan di bawah ini.
File file = new File("path of the document")
PDDocument.load(file);
Langkah 2: Lakukan Operasi yang Diperlukan
Lakukan operasi yang diperlukan seperti menambahkan halaman menambahkan teks, menambahkan gambar ke dokumen yang dimuat.
Langkah 3: Menyimpan Dokumen
Setelah menambahkan semua halaman, simpan dokumen PDF menggunakan save() metode dari PDDocument kelas seperti yang ditunjukkan pada blok kode berikut.
document.save("Path");
Langkah 4: Menutup Dokumen
Terakhir tutup dokumen menggunakan close() metode dari PDDocument kelas seperti yang ditunjukkan di bawah ini.
document.close();
Contoh
Misalkan kita memiliki dokumen PDF yang berisi satu halaman, di jalur, C:/PdfBox_Examples/ seperti yang ditunjukkan pada tangkapan layar berikut.
Contoh ini menunjukkan cara memuat Dokumen PDF yang sudah ada. Di sini, kami akan memuat dokumen PDFsample.pdf ditunjukkan di atas, tambahkan halaman ke dalamnya, dan simpan di jalur yang sama dengan nama yang sama.
Step 1 - Simpan kode ini dalam file dengan nama LoadingExistingDocument.java.
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
public class LoadingExistingDocument {
public static void main(String args[]) throws IOException {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument document = PDDocument.load(file);
System.out.println("PDF loaded");
//Adding a blank page to the document
document.addPage(new PDPage());
//Saving the document
document.save("C:/PdfBox_Examples/sample.pdf");
//Closing the document
document.close();
}
}
Kompilasi dan jalankan file Java yang disimpan dari command prompt menggunakan perintah berikut
javac LoadingExistingDocument.java
java LoadingExistingDocument
Setelah dijalankan, program di atas memuat dokumen PDF yang ditentukan dan menambahkan halaman kosong ke dalamnya yang menampilkan pesan berikut.
PDF loaded
Jika Anda memverifikasi jalur yang ditentukan, Anda dapat menemukan halaman tambahan yang ditambahkan ke dokumen PDF yang ditentukan seperti yang ditunjukkan di bawah ini.
Sekarang mari kita pelajari cara menghapus halaman dari dokumen PDF.
Menghapus Halaman dari Dokumen yang Ada
Anda dapat menghapus halaman dari dokumen PDF yang ada menggunakan removePage() metode dari PDDocument kelas.
Langkah 1: Memuat Dokumen PDF yang Ada
Muat dokumen PDF yang ada menggunakan metode statis load() dari PDDocumentkelas. Metode ini menerima objek file sebagai parameter, karena ini adalah metode statis Anda dapat memanggilnya menggunakan nama kelas seperti yang ditunjukkan di bawah ini.
File file = new File("path of the document")
PDDocument.load(file);
Langkah 2: Mendaftar Jumlah Halaman
Anda dapat membuat daftar jumlah halaman yang ada di dokumen PDF menggunakan getNumberOfPages() metode seperti yang ditunjukkan di bawah ini.
int noOfPages= document.getNumberOfPages();
System.out.print(noOfPages);
Langkah 3: Menghapus Halaman
Anda dapat menghapus halaman dari dokumen PDF menggunakan removePage() metode dari PDDocumentkelas. Untuk metode ini, Anda harus meneruskan indeks halaman yang akan dihapus.
Sementara menetapkan indeks untuk halaman dalam dokumen PDF, perlu diingat bahwa pengindeksan halaman ini dimulai dari nol, yaitu, jika Anda ingin menghapus 1 st halaman maka kebutuhan nilai indeks menjadi 0.
document.removePage(2);
Langkah 4: Menyimpan Dokumen
Setelah menghapus halaman, simpan dokumen PDF menggunakan save() metode dari PDDocument kelas seperti yang ditunjukkan pada blok kode berikut.
document.save("Path");
Langkah 5: Menutup Dokumen
Terakhir, tutup dokumen menggunakan close() metode dari PDDocument kelas seperti yang ditunjukkan di bawah ini.
document.close();
Contoh
Misalkan, kami memiliki dokumen PDF dengan nama sample.pdf dan itu berisi tiga halaman kosong seperti yang ditunjukkan di bawah ini.
Contoh ini menunjukkan cara menghapus halaman dari dokumen PDF yang sudah ada. Di sini, kami akan memuat dokumen PDF yang ditentukan di atas bernamasample.pdf, hapus halaman darinya, dan simpan di jalur C:/PdfBox_Examples/. Simpan kode ini dalam file dengan namaRemoving_pages.java.
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
public class RemovingPages {
public static void main(String args[]) throws IOException {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument document = PDDocument.load(file);
//Listing the number of existing pages
int noOfPages= document.getNumberOfPages();
System.out.print(noOfPages);
//Removing the pages
document.removePage(2);
System.out.println("page removed");
//Saving the document
document.save("C:/PdfBox_Examples/sample.pdf");
//Closing the document
document.close();
}
}
Kompilasi dan jalankan file Java yang disimpan dari command prompt menggunakan perintah berikut.
javac RemovingPages.java
java RemovingPages
Setelah eksekusi, program di atas membuat dokumen PDF dengan halaman kosong yang menampilkan pesan berikut.
3
page removed
Jika Anda memverifikasi jalur yang ditentukan, Anda dapat menemukan bahwa halaman yang diperlukan telah dihapus dan hanya dua halaman yang tersisa di dokumen seperti yang ditunjukkan di bawah ini.
Seperti file lainnya, dokumen PDF juga memiliki properti dokumen. Properti ini adalah pasangan nilai kunci. Setiap properti memberikan informasi tertentu tentang dokumen tersebut.
Berikut adalah properti dari dokumen PDF -
S.No. | Deskripsi properti |
---|---|
1 | File Properti ini menyimpan nama file. |
2 | Title Dengan menggunakan properti ini, Anda dapat mengatur judul dokumen. |
3 | Author Menggunakan properti ini, Anda dapat mengatur nama penulis untuk dokumen tersebut. |
4 | Subject Dengan menggunakan properti ini, Anda dapat menentukan subjek dokumen PDF. |
5 | Keywords Dengan menggunakan properti ini, Anda dapat membuat daftar kata kunci yang dapat kita gunakan untuk mencari dokumen. |
6 | Created Dengan menggunakan properti ini, Anda dapat mengatur tanggal dibuat untuk dokumen tersebut. |
7 | Modified Dengan menggunakan properti ini, Anda dapat mengatur tanggal diubah untuk dokumen tersebut. |
8 | Application Dengan menggunakan properti ini, Anda dapat mengatur Aplikasi dokumen. |
Berikut adalah tangkapan layar tabel properti dokumen dari dokumen PDF.
Mengatur Properti Dokumen
PDFBox memberi Anda kelas bernama PDDocumentInformation. Kelas ini memiliki seperangkat metode penyetel dan pengambil.
Metode penyetel kelas ini digunakan untuk menyetel nilai ke berbagai properti dokumen dan metode pengambil yang digunakan untuk mengambil nilai ini.
Berikut ini adalah metode penyetel PDDocumentInformation kelas.
S.No. | Metode & Deskripsi |
---|---|
1 | setAuthor(String author) This method is used to set the value for the property of the PDF document named Author. |
2 | setTitle(String title) This method is used to set the value for the property of the PDF document named Title. |
3 | setCreator(String creator) This method is used to set the value for the property of the PDF document named Creator. |
4 | setSubject(String subject) This method is used to set the value for the property of the PDF document named Subject. |
5 | setCreationDate(Calendar date) This method is used to set the value for the property of the PDF document named CreationDate. |
6 | setModificationDate(Calendar date) This method is used to set the value for the property of the PDF document named ModificationDate. |
7 | setKeywords(String keywords list) This method is used to set the value for the property of the PDF document named Keywords. |
Example
PDFBox provides a class called PDDocumentInformation and this class provides various methods. These methods can set various properties to the document and retrieve them.
This example demonstrates how to add properties such as Author, Title, Date, and Subject to a PDF document. Here, we will create a PDF document named doc_attributes.pdf, add various attributes to it, and save it in the path C:/PdfBox_Examples/. Save this code in a file with name AddingAttributes.java.
import java.io.IOException;
import java.util.Calendar;
import java.util.GregorianCalendar;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentInformation;
import org.apache.pdfbox.pdmodel.PDPage;
public class AddingDocumentAttributes {
public static void main(String args[]) throws IOException {
//Creating PDF document object
PDDocument document = new PDDocument();
//Creating a blank page
PDPage blankPage = new PDPage();
//Adding the blank page to the document
document.addPage( blankPage );
//Creating the PDDocumentInformation object
PDDocumentInformation pdd = document.getDocumentInformation();
//Setting the author of the document
pdd.setAuthor("Tutorialspoint");
// Setting the title of the document
pdd.setTitle("Sample document");
//Setting the creator of the document
pdd.setCreator("PDF Examples");
//Setting the subject of the document
pdd.setSubject("Example document");
//Setting the created date of the document
Calendar date = new GregorianCalendar();
date.set(2015, 11, 5);
pdd.setCreationDate(date);
//Setting the modified date of the document
date.set(2016, 6, 5);
pdd.setModificationDate(date);
//Setting keywords for the document
pdd.setKeywords("sample, first example, my pdf");
//Saving the document
document.save("C:/PdfBox_Examples/doc_attributes.pdf");
System.out.println("Properties added successfully ");
//Closing the document
document.close();
}
}
Compile and execute the saved Java file from the command prompt using the following commands.
javac AddingAttributes.java
java AddingAttributes
Upon execution, the above program adds all the specified attributes to the document displaying the following message.
Properties added successfully
Now, if you visit the given path you can find the PDF created in it. Right click on the document and select the document properties option as shown below.
This will give you the document properties window and here you can observe all the properties of the document were set to specified values.
Retrieving the Document Properties
You can retrieve the properties of a document using the getter methods provided by the PDDocumentInformation class.
Following are the getter methods of the PDDocumentInformation class.
S.No. | Method & Description |
---|---|
1 | getAuthor() This method is used to retrieve the value for the property of the PDF document named Author. |
2 | getTitle() This method is used to retrieve the value for the property of the PDF document named Title. |
3 | getCreator() This method is used to retrieve the value for the property of the PDF document named Creator. |
4 | getSubject() This method is used to retrieve the value for the property of the PDF document named Subject. |
5 | getCreationDate() This method is used to retrieve the value for the property of the PDF document named CreationDate. |
6 | getModificationDate() This method is used to retrieve the value for the property of the PDF document named ModificationDate. |
7 | getKeywords() This method is used to retrieve the value for the property of the PDF document named Keywords. |
Example
This example demonstrates how to retrieve the properties of an existing PDF document. Here, we will create a Java program and load the PDF document named doc_attributes.pdf, which is saved in the path C:/PdfBox_Examples/, and retrieve its properties. Save this code in a file with name RetrivingDocumentAttributes.java.
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentInformation;
public class RetrivingDocumentAttributes {
public static void main(String args[]) throws IOException {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/doc_attributes.pdf")
PDDocument document = PDDocument.load(file);
//Getting the PDDocumentInformation object
PDDocumentInformation pdd = document.getDocumentInformation();
//Retrieving the info of a PDF document
System.out.println("Author of the document is :"+ pdd.getAuthor());
System.out.println("Title of the document is :"+ pdd.getTitle());
System.out.println("Subject of the document is :"+ pdd.getSubject());
System.out.println("Creator of the document is :"+ pdd.getCreator());
System.out.println("Creation date of the document is :"+ pdd.getCreationDate());
System.out.println("Modification date of the document is :"+
pdd.getModificationDate());
System.out.println("Keywords of the document are :"+ pdd.getKeywords());
//Closing the document
document.close();
}
}
Compile and execute the saved Java file from the command prompt using the following commands.
javac RetrivingDocumentAttributes.java
java RetrivingDocumentAttributes
Upon execution, the above program retrieves all the attributes of the document and displays them as shown below.
Author of the document is :Tutorialspoint
Title of the document is :Sample document
Subject of the document is :Example document
Creator of the document is :PDF Examples
Creation date of the document is :11/5/2015
Modification date of the document is :6/5/2016
Keywords of the document are :sample, first example, my pdf
In the previous chapter, we discussed how to add pages to a PDF document. In this chapter, we will discuss how to add text to an existing PDF document.
Adding Text to an Existing PDF Document
You can add contents to a document using the PDFBox library, this provides you a class named PDPageContentStream which contains the required methods to insert text, images, and other types of contents in a page of a PDFDocument.
Following are the steps to create an empty document and add contents to a page in it.
Step 1: Loading an Existing Document
You can load an existing document using the load() method of the PDDocument class. Therefore, instantiate this class and load the required document as shown below.
File file = new File("Path of the document");
PDDocument doc = document.load(file);
Step 2: Getting the Required Page
You can get the required page in a document using the getPage() method. Retrieve the object of the required page by passing its index to this method as shown below.
PDPage page = doc.getPage(1);
Step 3: Preparing the Content Stream
You can insert various kinds of data elements using the object of the class PDPageContentStream. You need to pass the document object and the page object to the constructor of this class therefore, instantiate this class by passing these two objects created in the previous steps as shown below.
PDPageContentStream contentStream = new PDPageContentStream(doc, page);
Step 4: Beginning the Text
While inserting text in a PDF document, you can specify the start and end points of the text using the beginText() and endText() methods of the PDPageContentStream class as shown below.
contentStream.beginText();
………………………..
code to add text content
………………………..
contentStream.endText();
Therefore, begin the text using the beginText() method as shown below.
contentStream.beginText();
Step 5: Setting the Position of the Text
Using the newLineAtOffset() method, you can set the position on the content stream in the page.
//Setting the position for the line
contentStream.newLineAtOffset(25, 700);
Step 6: Setting the Font
You can set the font of the text to the required style using the setFont() method of the PDPageContentStream class as shown below. To this method you need to pass the type and size of the font.
contentStream.setFont( font_type, font_size );
Step 7: Inserting the Text
You can insert the text into the page using the ShowText() method of the PDPageContentStream class as shown below. This method accepts the required text in the form of string.
contentStream.showText(text);
Step 8: Ending the Text
After inserting the text, you need to end the text using the endText() method of the PDPageContentStream class as shown below.
contentStream.endText();
Step 9: Closing the PDPageContentStream
Close the PDPageContentStream object using the close() method as shown below.
contentstream.close();
Step 10: Saving the Document
After adding the required content, save the PDF document using the save() method of the PDDocument class as shown in the following code block.
doc.save("Path");
Step 11: Closing the Document
Finally, close the document using the close() method of the PDDocument class as shown below.
doc.close();
Example
This example demonstrates how to add contents to a page in a document. Here, we will create a Java program to load the PDF document named my_doc.pdf, which is saved in the path C:/PdfBox_Examples/, and add some text to it. Save this code in a file with name AddingContent.java.
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
public class AddingContent {
public static void main (String args[]) throws IOException {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/my_doc.pdf");
PDDocument document = PDDocument.load(file);
//Retrieving the pages of the document
PDPage page = document.getPage(1);
PDPageContentStream contentStream = new PDPageContentStream(document, page);
//Begin the Content stream
contentStream.beginText();
//Setting the font to the Content stream
contentStream.setFont(PDType1Font.TIMES_ROMAN, 12);
//Setting the position for the line
contentStream.newLineAtOffset(25, 500);
String text = "This is the sample document and we are adding content to it.";
//Adding text in the form of string
contentStream.showText(text);
//Ending the content stream
contentStream.endText();
System.out.println("Content added");
//Closing the content stream
contentStream.close();
//Saving the document
document.save(new File("C:/PdfBox_Examples/new.pdf"));
//Closing the document
document.close();
}
}
Compile and execute the saved Java file from the command prompt using the following commands.
javac AddingContent.java
java AddingContent
Upon execution, the above program adds the given text to the document and displays the following message.
Content added
If you verify the PDF Document new.pdf in the specified path, you can observe that the given content is added to the document as shown below.
In the example provided in the previous chapter we discussed how to add text to a page in a PDF but through this program, you can only add the text that would fit in a single line. If you try to add more content, all the text that exceeds the line space will not be displayed.
For example, if you execute the above program in the previous chapter by passing the following string only a part of it will be displayed.
String text = "This is an example of adding text to a page in the pdf document. we can
add as many lines as we want like this using the showText() method of the
ContentStream class";
Replace the string text of the example in the previous chapter with the above mentioned string and execute it. Upon execution, you will receive the following output.
If you observe the output carefully, you can notice that only a part of the string is displayed.
In order to add multiple lines to a PDF you need to set the leading using the setLeading() method and shift to new line using newline() method after finishing each line.
Steps
Following are the steps to create an empty document and add contents to a page in it.
Step 1: Loading an Existing Document
You can load an existing document using the load() method of the PDDocument class. Therefore, instantiate this class and load the required document as shown below.
File file = new File("Path of the document");
PDDocument doc = PDDocument.load(file);
Step 2: Getting the Required Page
You can get the required page in a document using the getPage() method. Retrieve the object of the required page by passing its index to this method as shown below.
PDPage page = doc.getPage(1);
Step 3: Preparing the Content stream
You can insert various kinds of data elements using the object of the class named PDPageContentStream. You need to pass the document object and the page object to the constructor of this class therefore, instantiate this class by passing these two objects created in the previous steps as shown below.
PDPageContentStream contentStream = new PDPageContentStream(doc, page);
Step 4: Beginning the Text
While inserting text in a PDF document, you can specify the start and end points of the text using the beginText() and endText() methods of the PDPageContentStream class as shown below.
contentStream.beginText();
………………………..
code to add text content
………………………..
contentStream.endText();
Therefore, begin the text using the beginText() method as shown below.
contentStream.beginText();
Step 5: Setting the Position of the Text
Using the newLineAtOffset() method, you can set the position on the content stream in the page.
//Setting the position for the line
contentStream.newLineAtOffset(25, 700);
Step 6: Setting the Font
You can set the font of the text to the required style using the setFont() method of the PDPageContentStream class as shown below to this method you need to pass the type and size of the font.
contentStream.setFont( font_type, font_size );
Step 7: Setting the Text Leading
You can set the text leading using the setLeading() method as shown below.
contentStream.setLeading(14.5f);
Step 8: Inserting Multiple Strings Using newline()
You can insert multiple strings using the ShowText() method of the PDPageContentStream class, by dividing each of them using the newline() method as shown below.
contentStream. ShowText(text1);
contentStream.newLine();
contentStream. ShowText(text2);
Step 9: Ending the Text
After inserting the text, you need to end the text using the endText() method of the PDPageContentStream class as shown below.
contentStream.endText();
Step 10: Closing the PDPageContentStream
Close the PDPageContentStream object using the close() method as shown below.
contentstream.close();
Step 11: Saving the Document
After adding the required content, save the PDF document using the save() method of the PDDocument class as shown in the following code block.
doc.save("Path");
Step 12: Closing the Document
Finally, close the document using the close() method of the PDDocument class as shown below.
doc.close();
Example
This example demonstrates how to add multiple lines in a PDF using PDFBox. Save this program in a file with name AddMultipleLines.java.
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
public class AddMultipleLines {
public static void main(String args[]) throws IOException {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/my_pdf.pdf");
PDDocument doc = document.load(file);
//Creating a PDF Document
PDPage page = doc.getPage(1);
PDPageContentStream contentStream = new PDPageContentStream(doc, page);
//Begin the Content stream
contentStream.beginText();
//Setting the font to the Content stream
contentStream.setFont( PDType1Font.TIMES_ROMAN, 16 );
//Setting the leading
contentStream.setLeading(14.5f);
//Setting the position for the line
contentStream.newLineAtOffset(25, 725);
String text1 = "This is an example of adding text to a page in the pdf document.
we can add as many lines";
String text2 = "as we want like this using the ShowText() method of the
ContentStream class";
//Adding text in the form of string
contentStream. ShowText(text1);
contentStream.newLine();
contentStream. ShowText(text2);
//Ending the content stream
contentStream.endText();
System.out.println("Content added");
//Closing the content stream
contentStream.close();
//Saving the document
doc.save(new File("C:/PdfBox_Examples/new.pdf"));
//Closing the document
doc.close();
}
}
Compile and execute the saved Java file from the command prompt using the following commands.
javac AddMultipleLines.java
java AddMultipleLines
Upon execution, the above program adds the given text to the document and displays the following message.
Content added
If you verify the PDF Document new.pdf in the specified path, you can observe that the given content is added to the document in multiple lines as shown below.
In the previous chapter, we have seen how to add text to an existing PDF document. In this chapter, we will discuss how to read text from an existing PDF document.
Extracting Text from an Existing PDF Document
Extracting text is one of the main features of the PDF box library. You can extract text using the getText() method of the PDFTextStripper class. This class extracts all the text from the given PDF document.
Following are the steps to extract text from an existing PDF document.
Step 1: Loading an Existing PDF Document
Load an existing PDF document using the static method load() of the PDDocument class. This method accepts a file object as a parameter, since this is a static method you can invoke it using class name as shown below.
File file = new File("path of the document")
PDDocument document = PDDocument.load(file);
Langkah 2: Buat instance Kelas PDFTextStripper
Itu PDFTextStripper class menyediakan metode untuk mengambil teks dari dokumen PDF oleh karena itu, buat instance class ini seperti yang ditunjukkan di bawah ini.
PDFTextStripper pdfStripper = new PDFTextStripper();
Langkah 3: Mengambil Teks
Anda dapat membaca / mengambil konten halaman dari dokumen PDF menggunakan getText() metode dari PDFTextStripperkelas. Untuk metode ini Anda perlu meneruskan objek dokumen sebagai parameter. Metode ini mengambil teks dalam dokumen tertentu dan mengembalikannya dalam bentuk objek String.
String text = pdfStripper.getText(document);
Langkah 4: Menutup Dokumen
Terakhir, tutup dokumen menggunakan close() metode kelas PDDocument seperti yang ditunjukkan di bawah ini.
document.close();
Contoh
Misalkan, kami memiliki dokumen PDF dengan beberapa teks di dalamnya seperti yang ditunjukkan di bawah ini.
Contoh ini menunjukkan cara membaca teks dari dokumen PDF yang disebutkan di atas. Di sini, kami akan membuat program Java dan memuat dokumen PDF bernamanew.pdf, yang disimpan di jalan C:/PdfBox_Examples/. Simpan kode ini dalam file dengan namaReadingText.java.
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
public class ReadingText {
public static void main(String args[]) throws IOException {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/new.pdf");
PDDocument document = PDDocument.load(file);
//Instantiate PDFTextStripper class
PDFTextStripper pdfStripper = new PDFTextStripper();
//Retrieving text from PDF document
String text = pdfStripper.getText(document);
System.out.println(text);
//Closing the document
document.close();
}
}
Kompilasi dan jalankan file Java yang disimpan dari command prompt menggunakan perintah berikut.
javac ReadingText.java
java ReadingText
Setelah dieksekusi, program di atas mengambil teks dari dokumen PDF yang diberikan dan menampilkannya seperti yang ditunjukkan di bawah ini.
This is an example of adding text to a page in the pdf document. we can add as many lines
as we want like this using the ShowText() method of the ContentStream class.
Pada bab sebelumnya, kita telah melihat bagaimana mengekstrak teks dari dokumen PDF yang sudah ada. Pada bab ini, kita akan membahas bagaimana memasukkan gambar ke dokumen PDF.
Memasukkan Gambar ke Dokumen PDF
Anda dapat memasukkan gambar ke dalam dokumen PDF menggunakan createFromFile() dan drawImage() metode kelas PDImageXObject dan PDPageContentStream masing-masing.
Berikut adalah langkah-langkah untuk mengekstrak teks dari dokumen PDF yang sudah ada.
Langkah 1: Memuat Dokumen PDF yang Ada
Muat dokumen PDF yang ada menggunakan metode statis load() dari PDDocumentkelas. Metode ini menerima objek file sebagai parameter, karena ini adalah metode statis Anda dapat memanggilnya menggunakan nama kelas seperti yang ditunjukkan di bawah ini.
File file = new File("path of the document")
PDDocument doc = PDDocument.load(file);
Langkah 2: Mengambil Halaman
Pilih halaman di dokumen PDF dan ambil objek halamannya menggunakan getPage() metode seperti yang ditunjukkan di bawah ini.
PDPage page = doc.getPage(0);
Langkah 3: Membuat objek PDImageXObject
Kelas PDImageXObjectdi perpustakaan PDFBox mewakili sebuah gambar. Ini menyediakan semua metode yang diperlukan untuk melakukan operasi yang berkaitan dengan gambar, seperti, memasukkan gambar, mengatur tingginya, mengatur lebarnya, dll.
Kita dapat membuat objek dari kelas ini menggunakan metode ini createFromFile(). Untuk metode ini, kita perlu melewati jalur gambar yang ingin kita tambahkan dalam bentuk string dan objek dokumen yang gambar perlu ditambahkan.
PDImageXObject pdImage = PDImageXObject.createFromFile("C:/logo.png", doc);
Langkah 4: Mempersiapkan Aliran Konten
Anda dapat memasukkan berbagai jenis elemen data menggunakan objek dari kelas bernama PDPageContentStream. Anda perlu meneruskan objek dokumen dan objek halaman ke konstruktor kelas ini, oleh karena itu, buat instance kelas ini dengan meneruskan dua objek yang dibuat pada langkah sebelumnya seperti yang ditunjukkan di bawah ini.
PDPageContentStream contentStream = new PDPageContentStream(doc, page);
Langkah 5: Menggambar Gambar di Dokumen PDF
Anda dapat memasukkan gambar ke dalam dokumen PDF menggunakan drawImage()metode. Untuk metode ini, Anda perlu menambahkan objek gambar yang dibuat pada langkah di atas dan dimensi gambar yang diperlukan (lebar dan tinggi) seperti yang ditunjukkan di bawah ini.
contentstream.drawImage(pdImage, 70, 250);
Langkah 6: Menutup PDPageContentStream
Tutup PDPageContentStream objek menggunakan close() metode seperti yang ditunjukkan di bawah ini.
contentstream.close();
Langkah 7: Menyimpan Dokumen
Setelah menambahkan konten yang diperlukan, simpan dokumen PDF menggunakan save() metode dari PDDocument kelas seperti yang ditunjukkan pada blok kode berikut.
doc.save("Path");
Langkah 8: Menutup Dokumen
Terakhir, tutup dokumen menggunakan close() metode dari PDDocument kelas seperti yang ditunjukkan di bawah ini.
doc.close();
Contoh
Misalkan kita memiliki dokumen PDF bernama sample.pdf, di jalan C:/PdfBox_Examples/ dengan halaman kosong seperti yang ditunjukkan di bawah ini.
Contoh ini menunjukkan cara menambahkan gambar ke halaman kosong dari dokumen PDF yang disebutkan di atas. Di sini, kami akan memuat dokumen PDF bernamasample.pdfdan tambahkan gambar ke dalamnya. Simpan kode ini dalam file dengan namaInsertingImage.java.
import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
public class InsertingImage {
public static void main(String args[]) throws Exception {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument doc = PDDocument.load(file);
//Retrieving the page
PDPage page = doc.getPage(0);
//Creating PDImageXObject object
PDImageXObject pdImage = PDImageXObject.createFromFile("C:/PdfBox_Examples/logo.png",doc);
//creating the PDPageContentStream object
PDPageContentStream contents = new PDPageContentStream(doc, page);
//Drawing the image in the PDF document
contents.drawImage(pdImage, 70, 250);
System.out.println("Image inserted");
//Closing the PDPageContentStream object
contents.close();
//Saving the document
doc.save("C:/PdfBox_Examples/sample.pdf");
//Closing the document
doc.close();
}
}
Kompilasi dan jalankan file Java yang disimpan dari command prompt menggunakan perintah berikut.
javac InsertingImage.java
java InsertingImage
Setelah dieksekusi, program di atas memasukkan gambar ke halaman tertentu dari dokumen PDF yang diberikan yang menampilkan pesan berikut.
Image inserted
Jika Anda memverifikasi dokumen sample.pdf, Anda dapat mengamati bahwa gambar dimasukkan di dalamnya seperti yang ditunjukkan di bawah ini.
Pada bab sebelumnya, kita telah melihat bagaimana menyisipkan gambar ke dalam dokumen PDF. Pada bab ini, kita akan membahas bagaimana mengenkripsi dokumen PDF.
Mengenkripsi Dokumen PDF
Anda dapat mengenkripsi dokumen PDF menggunakan metode yang disediakan oleh StandardProtectionPolicy dan AccessPermission classes.
Itu AccessPermissionkelas digunakan untuk melindungi Dokumen PDF dengan memberikan izin akses padanya. Dengan menggunakan kelas ini, Anda dapat membatasi pengguna untuk melakukan operasi berikut.
- Cetak dokumen
- Ubah konten dokumen
- Salin atau ekstrak konten dokumen
- Tambahkan atau ubah anotasi
- Isi bidang formulir interaktif
- Ekstrak teks dan grafik untuk aksesibilitas bagi orang-orang tunanetra
- Pasang dokumen
- Cetak dengan kualitas yang menurun
Itu StandardProtectionPolicy class digunakan untuk menambahkan perlindungan berbasis kata sandi ke dokumen.
Berikut adalah langkah-langkah untuk mengenkripsi dokumen PDF yang sudah ada.
Langkah 1: Memuat Dokumen PDF yang Ada
Muat dokumen PDF yang ada menggunakan metode statis load() dari PDDocumentkelas. Metode ini menerima objek file sebagai parameter, karena ini adalah metode statis Anda dapat memanggilnya menggunakan nama kelas seperti yang ditunjukkan di bawah ini.
File file = new File("path of the document")
PDDocument document = PDDocument.load(file);
Langkah 2: Membuat Objek Izin Akses
Instantiate AccessPermission kelas seperti yang ditunjukkan di bawah ini.
AccessPermission accessPermission = new AccessPermission();
Langkah 3: Membuat Objek StandardProtectionPolicy
Instantiate StandardProtectionPolicy kelas dengan melewatkan kata sandi pemilik, kata sandi pengguna, dan AccessPermission objek seperti yang ditunjukkan di bawah ini.
StandardProtectionPolicy spp = new StandardProtectionPolicy("1234","1234",accessPermission);
Langkah 4: Mengatur Panjang Kunci Enkripsi
Setel panjang kunci enkripsi menggunakan setEncryptionKeyLength() metode seperti yang ditunjukkan di bawah ini.
spp.setEncryptionKeyLength(128);
Langkah 5: Mengatur Izin
Setel izin menggunakan setPermissions()metode kelas StandardProtectionPolicy. Metode ini menerima fileAccessPermission objek sebagai parameter.
spp.setPermissions(accessPermission);
Langkah 6: Melindungi Dokumen
Anda dapat melindungi dokumen Anda menggunakan protect() metode dari PDDocumentkelas seperti yang ditunjukkan di bawah ini. MelewatiStandardProtectionPolicy objek sebagai parameter untuk metode ini.
document.protect(spp);
Langkah 7: Menyimpan Dokumen
Setelah menambahkan konten yang diperlukan, simpan dokumen PDF menggunakan save() metode dari PDDocument kelas seperti yang ditunjukkan pada blok kode berikut.
document.save("Path");
Langkah 8: Menutup Dokumen
Terakhir, tutup dokumen menggunakan close() metode dari PDDocument kelas seperti yang ditunjukkan di bawah ini.
document.close();
Contoh
Misalkan, kami memiliki dokumen PDF bernama sample.pdf, di jalan C:/PdfBox_Examples/ dengan halaman kosong seperti yang ditunjukkan di bawah ini.
Contoh ini menunjukkan cara mengenkripsi dokumen PDF yang disebutkan di atas. Di sini, kami akan memuat dokumen PDF bernamasample.pdfdan mengenkripsinya. Simpan kode ini dalam file dengan namaEncriptingPDF.java.
import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
public class EncriptingPDF {
public static void main(String args[]) throws Exception {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument document = PDDocument.load(file);
//Creating access permission object
AccessPermission ap = new AccessPermission();
//Creating StandardProtectionPolicy object
StandardProtectionPolicy spp = new StandardProtectionPolicy("1234", "1234", ap);
//Setting the length of the encryption key
spp.setEncryptionKeyLength(128);
//Setting the access permissions
spp.setPermissions(ap);
//Protecting the document
document.protect(spp);
System.out.println("Document encrypted");
//Saving the document
document.save("C:/PdfBox_Examples/sample.pdf");
//Closing the document
document.close();
}
}
Kompilasi dan jalankan file Java yang disimpan dari command prompt menggunakan perintah berikut.
javac EncriptingPDF.java
java EncriptingPDF
Setelah dijalankan, program di atas mengenkripsi dokumen PDF yang diberikan yang menampilkan pesan berikut.
Document encrypted
Jika Anda mencoba membuka dokumen sample.pdf, Anda tidak bisa, karena itu dienkripsi. Sebagai gantinya, ia meminta untuk mengetikkan kata sandi untuk membuka dokumen seperti yang ditunjukkan di bawah ini.
Pada bab sebelumnya, kita telah mempelajari cara memasukkan gambar ke dalam dokumen PDF. Pada bab ini, kita akan membahas bagaimana menambahkan JavaScript ke dokumen PDF.
Menambahkan JavaScript ke Dokumen PDF
Anda dapat menambahkan tindakan JavaScript ke dokumen PDF menggunakan PDActionJavaScriptkelas. Ini mewakili tindakan JavaScript.
Berikut adalah langkah-langkah untuk menambahkan tindakan JavaScript ke dokumen PDF yang sudah ada.
Langkah 1: Memuat Dokumen PDF yang Ada
Muat dokumen PDF yang ada menggunakan metode statis load() dari PDDocumentkelas. Metode ini menerima objek file sebagai parameter, karena ini adalah metode statis Anda dapat memanggilnya menggunakan nama kelas seperti yang ditunjukkan di bawah ini.
File file = new File("path of the document")
PDDocument document = PDDocument.load(file);
Langkah 2: Membuat Objek PDActionJavaScript
Instantiate PDActionJavaScriptobjek seperti yang ditunjukkan di bawah ini. Ke konstruktor kelas ini, teruskan JavaScript yang diperlukan dalam bentuk String seperti yang ditunjukkan di bawah ini.
String javaScript = "app.alert( {cMsg: 'this is an example', nIcon: 3,"
+ " nType: 0,cTitle: 'PDFBox Javascript example' } );";
PDActionJavaScript PDAjavascript = new PDActionJavaScript(javaScript);
Langkah 3: Menyematkan skrip Java di Dokumen
Sematkan string yang diperlukan ke dokumen PDF seperti yang ditunjukkan di bawah ini.
document.getDocumentCatalog().setOpenAction(PDAjavascript);
Langkah 4: Menyimpan Dokumen
Setelah menambahkan konten yang diperlukan, simpan dokumen PDF menggunakan save() metode dari PDDocument kelas seperti yang ditunjukkan pada blok kode berikut.
document.save("Path");
Langkah 5: Menutup Dokumen
Terakhir, tutup dokumen menggunakan close() metode dari PDDocument kelas seperti yang ditunjukkan di bawah ini.
document.close();
Contoh
Misalkan, kami memiliki dokumen PDF bernama sample.pdf, di jalan C:/PdfBox_Examples/ dengan halaman kosong seperti yang ditunjukkan di bawah ini.
Contoh ini menunjukkan cara menyematkan JavaScript di dokumen PDF yang disebutkan di atas. Di sini, kami akan memuat dokumen PDF bernamasample.pdfdan menyematkan JavaScript di dalamnya. Simpan kode ini dalam file dengan namaAddJavaScript.java.
import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.interactive.action.PDActionJavaScript;
public class AddJavaScript {
public static void main(String args[]) throws Exception {
//Loading an existing file
File file = new File("C:/PdfBox_Examples/new.pdf");
PDDocument document = PDDocument.load(file);
String javaScript = "app.alert( {cMsg: 'this is an example', nIcon: 3,"
+ " nType: 0, cTitle: 'PDFBox Javascript example’} );";
//Creating PDActionJavaScript object
PDActionJavaScript PDAjavascript = new PDActionJavaScript(javaScript);
//Embedding java script
document.getDocumentCatalog().setOpenAction(PDAjavascript);
//Saving the document
document.save( new File("C:/PdfBox_Examples/new.pdf") );
System.out.println("Data added to the given PDF");
//Closing the document
document.close();
}
}
Kompilasi dan jalankan file Java yang disimpan dari command prompt menggunakan perintah berikut.
javac AddJavaScript.java
java AddJavaScript
Setelah dieksekusi, program di atas menyematkan JavaScript dalam dokumen PDF tertentu yang menampilkan pesan berikut.
Data added to the given PDF
Jika Anda mencoba membuka dokumen new.pdf itu akan menampilkan pesan peringatan seperti yang ditunjukkan di bawah ini.
Pada bab sebelumnya, kita telah melihat bagaimana menambahkan JavaScript ke dokumen PDF. Sekarang mari kita belajar bagaimana membagi dokumen PDF menjadi beberapa dokumen.
Memisahkan Halaman dalam Dokumen PDF
Anda dapat membagi dokumen PDF yang diberikan menjadi beberapa dokumen PDF menggunakan kelas bernama Splitter. Kelas ini digunakan untuk membagi dokumen PDF yang diberikan menjadi beberapa dokumen lainnya.
Berikut adalah langkah-langkah untuk memisahkan dokumen PDF yang sudah ada
Langkah 1: Memuat Dokumen PDF yang Ada
Muat dokumen PDF yang ada menggunakan metode statis load() dari PDDocumentkelas. Metode ini menerima objek file sebagai parameter, karena ini adalah metode statis Anda dapat memanggilnya menggunakan nama kelas seperti yang ditunjukkan di bawah ini.
File file = new File("path of the document")
PDDocument document = PDDocument.load(file);
Langkah 2: Buat instance Kelas Splitter
Kelas bernama Splitter berisi metode untuk membagi dokumen PDF yang diberikan, membuat instance kelas ini seperti yang ditunjukkan di bawah ini.
Splitter splitter = new Splitter();
Langkah 3: Memisahkan Dokumen PDF
Anda dapat membagi dokumen yang diberikan menggunakan Split() metode dari Splitterkelas kelas ini. Metode ini menerima objek dariPDDocument kelas sebagai parameter.
List<PDDocument> Pages = splitter.split(document);
Itu split() metode membagi setiap halaman dari dokumen yang diberikan sebagai dokumen individual dan mengembalikan semua ini dalam bentuk daftar.
Langkah 4: Membuat Objek Iterator
Untuk menelusuri daftar dokumen yang Anda perlukan untuk mendapatkan objek iterator dari daftar yang diperoleh pada langkah di atas, Anda perlu mendapatkan objek iterator dari daftar menggunakan listIterator() metode seperti yang ditunjukkan di bawah ini.
Iterator<PDDocument> iterator = Pages.listIterator();
Langkah 5: Menutup Dokumen
Terakhir, tutup dokumen menggunakan close() metode dari PDDocument kelas seperti yang ditunjukkan di bawah ini.
document.close();
Contoh
Misalkan, ada dokumen PDF dengan nama sample.pdf di jalan C:\PdfBox_Examples\ dan dokumen ini berisi dua halaman - satu halaman berisi gambar dan halaman lain berisi teks seperti yang ditunjukkan di bawah ini.
Contoh ini menunjukkan cara membagi dokumen PDF yang disebutkan di atas. Di sini, kami akan membagi dokumen PDF bernamasample.pdf menjadi dua dokumen berbeda sample1.pdf dan sample2.pdf. Simpan kode ini dalam file dengan namaSplitPages.java.
import org.apache.pdfbox.multipdf.Splitter;
import org.apache.pdfbox.pdmodel.PDDocument;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Iterator;
public class SplitPages {
public static void main(String[] args) throws IOException {
//Loading an existing PDF document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument document = PDDocument.load(file);
//Instantiating Splitter class
Splitter splitter = new Splitter();
//splitting the pages of a PDF document
List<PDDocument> Pages = splitter.split(document);
//Creating an iterator
Iterator<PDDocument> iterator = Pages.listIterator();
//Saving each page as an individual document
int i = 1;
while(iterator.hasNext()) {
PDDocument pd = iterator.next();
pd.save("C:/PdfBox_Examples/sample"+ i++ +".pdf");
}
System.out.println("Multiple PDF’s created");
document.close();
}
}
Kompilasi dan jalankan file Java yang disimpan dari command prompt menggunakan perintah berikut
javac SplitPages.java
java SplitPages
Setelah dijalankan, program di atas mengenkripsi dokumen PDF yang diberikan yang menampilkan pesan berikut.
Multiple PDF’s created
Jika Anda memverifikasi jalur yang diberikan, Anda dapat mengamati bahwa beberapa PDF dibuat dengan nama sample1 dan sample2 seperti gambar dibawah.
Pada bab sebelumnya, kita telah melihat bagaimana membagi dokumen PDF menjadi beberapa dokumen. Sekarang mari kita belajar bagaimana menggabungkan beberapa dokumen PDF sebagai satu dokumen.
Menggabungkan Beberapa Dokumen PDF
Anda dapat menggabungkan beberapa dokumen PDF menjadi satu dokumen PDF menggunakan kelas bernama PDFMergerUtility kelas, kelas ini menyediakan metode untuk menggabungkan dua atau lebih dokumen PDF ke dalam satu dokumen PDF.
Berikut langkah-langkah untuk menggabungkan beberapa dokumen PDF.
Langkah 1: Membuat instance kelas PDFMergerUtility
Buat instance kelas utilitas penggabungan seperti yang ditunjukkan di bawah ini.
PDFMergerUtility PDFmerger = new PDFMergerUtility();
Langkah 2: Mengatur file tujuan
Setel file tujuan menggunakan metode setDestinationFileName () seperti yang ditunjukkan di bawah ini.
PDFmerger.setDestinationFileName("C:/PdfBox_Examples/data1/merged.pdf");
Langkah 3: Mengatur file sumber
Setel file sumber menggunakan metode addSource () seperti yang ditunjukkan di bawah ini.
File file = new File("path of the document")
PDFmerger.addSource(file);
Langkah 4: Menggabungkan dokumen
Gabungkan dokumen menggunakan metode mergeDocuments () dari kelas PDFmerger seperti yang ditunjukkan di bawah ini.
PDFmerger.mergeDocuments();
Contoh
Misalkan, kami memiliki dua dokumen PDF - sample1.pdf dan sample2.pdf, di jalan C:\PdfBox_Examples\ seperti gambar dibawah.
Contoh ini menunjukkan cara menggabungkan dokumen PDF di atas. Di sini, kami akan menggabungkan dokumen PDF bernamasample1.pdf dan sample2.pdf ke dalam satu dokumen PDF merged.pdf. Simpan kode ini dalam file dengan namaMergePDFs.java.
import org.apache.pdfbox.multipdf.PDFMergerUtility;
import java.io.File;
import java.io.IOException;
public class MergePDFs {
public static void main(String[] args) throws IOException {
File file1 = new File("C:\\EXAMPLES\\Demo1.pdf");
File file2 = new File("C:\\EXAMPLES\\Demo2.pdf");
//Instantiating PDFMergerUtility class
PDFMergerUtility PDFmerger = new PDFMergerUtility();
//Setting the destination file
PDFmerger.setDestinationFileName("C:\\Examples\\merged.pdf");
//adding the source files
PDFmerger.addSource(file1);
PDFmerger.addSource(file2);
//Merging the two documents
PDFmerger.mergeDocuments();
System.out.println("Documents merged");
}
}
Kompilasi dan jalankan file Java yang disimpan dari command prompt menggunakan perintah berikut.
javac MergePDFs.java
java MergePDFs
Setelah dijalankan, program di atas mengenkripsi dokumen PDF yang diberikan yang menampilkan pesan berikut.
Documents merged
Jika Anda memverifikasi jalur yang diberikan, Anda dapat mengamati bahwa dokumen PDF dengan nama merged.pdf dibuat dan ini berisi halaman dari kedua dokumen sumber seperti yang ditunjukkan di bawah ini.
Pada bab sebelumnya, kita telah melihat bagaimana menggabungkan beberapa dokumen PDF. Pada bab ini, kita akan memahami cara mengekstrak gambar dari halaman dokumen PDF.
Menghasilkan Gambar dari Dokumen PDF
Perpustakaan PDFBox memberi Anda kelas bernama PDFRenderer yang membuat dokumen PDF menjadi AWT BufferedImage.
Berikut adalah langkah-langkah untuk menghasilkan gambar dari dokumen PDF.
Langkah 1: Memuat Dokumen PDF yang Ada
Muat dokumen PDF yang ada menggunakan metode statis load() dari PDDocumentkelas. Metode ini menerima objek file sebagai parameter, karena ini adalah metode statis Anda dapat memanggilnya menggunakan nama kelas seperti yang ditunjukkan di bawah ini.
File file = new File("path of the document")
PDDocument document = PDDocument.load(file);
Langkah 2: Membuat Instansiasi Kelas PDFRenderer
Kelas bernama PDFRenderer membuat dokumen PDF menjadi AWT BufferedImage. Oleh karena itu, Anda perlu membuat instance kelas ini seperti yang ditunjukkan di bawah ini. Konstruktor kelas ini menerima objek dokumen; lewati objek dokumen yang dibuat pada langkah sebelumnya seperti yang ditunjukkan di bawah ini.
PDFRenderer renderer = new PDFRenderer(document);
Langkah 3: Rendering Gambar dari Dokumen PDF
Anda dapat merender gambar di halaman tertentu menggunakan metode ini renderImage() dari kelas Renderer, untuk metode ini Anda harus meneruskan indeks halaman tempat Anda memiliki gambar yang akan dirender.
BufferedImage image = renderer.renderImage(0);
Langkah 4: Menulis Gambar ke File
Anda dapat menulis gambar yang dirender pada langkah sebelumnya ke file menggunakan write()metode. Untuk metode ini, Anda harus melewatkan tiga parameter -
- Objek gambar yang diberikan.
- String yang merepresentasikan jenis gambar (jpg atau png).
- File objek yang Anda perlukan untuk menyimpan gambar yang diekstrak.
ImageIO.write(image, "JPEG", new File("C:/PdfBox_Examples/myimage.jpg"));
Langkah 5: Menutup Dokumen
Terakhir, tutup dokumen menggunakan close() metode kelas PDDocument seperti yang ditunjukkan di bawah ini.
document.close();
Contoh
Misalkan, kami memiliki dokumen PDF - sample.pdf di jalan C:\PdfBox_Examples\ dan ini berisi gambar di halaman pertamanya seperti yang ditunjukkan di bawah ini.
Contoh ini menunjukkan cara mengubah dokumen PDF di atas menjadi file gambar. Di sini, kami akan mengambil gambar di halaman 1 dokumen PDF dan menyimpannya sebagaimyimage.jpg. Simpan kode ini sebagaiPdfToImage.java
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
public class PdfToImage {
public static void main(String args[]) throws Exception {
//Loading an existing PDF document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument document = PDDocument.load(file);
//Instantiating the PDFRenderer class
PDFRenderer renderer = new PDFRenderer(document);
//Rendering an image from the PDF document
BufferedImage image = renderer.renderImage(0);
//Writing the image to a file
ImageIO.write(image, "JPEG", new File("C:/PdfBox_Examples/myimage.jpg"));
System.out.println("Image created");
//Closing the document
document.close();
}
}
Kompilasi dan jalankan file Java yang disimpan dari command prompt menggunakan perintah berikut.
javac PdfToImage.java
java PdfToImage
Setelah dieksekusi, program di atas mengambil gambar dalam dokumen PDF yang diberikan yang menampilkan pesan berikut.
Image created
Jika Anda memverifikasi jalur yang diberikan, Anda dapat mengamati bahwa gambar dibuat dan disimpan sebagai myimage.jpg seperti gambar dibawah.
Bab ini mengajarkan Anda cara membuat kotak warna di halaman dokumen PDF.
Membuat Kotak dalam Dokumen PDF
Anda dapat menambahkan kotak persegi panjang di halaman PDF menggunakan addRect() metode dari PDPageContentStream kelas.
Berikut langkah-langkah membuat bentuk persegi panjang di halaman dokumen PDF.
Langkah 1: Memuat Dokumen PDF yang Ada
Muat dokumen PDF yang ada menggunakan metode statis load() dari PDDocumentkelas. Metode ini menerima objek file sebagai parameter, karena ini adalah metode statis Anda dapat memanggilnya menggunakan nama kelas seperti yang ditunjukkan di bawah ini.
File file = new File("path of the document")
PDDocument document = PDDocument.load(file);
Langkah 2: Mendapatkan Objek Halaman
Anda perlu mengambil PDPage objek dari halaman yang diperlukan tempat Anda ingin menambahkan persegi panjang menggunakan getPage() metode dari PDDocumentkelas. Untuk metode ini, Anda harus meneruskan indeks halaman tempat Anda ingin menambahkan persegi panjang.
PDPage page = document.getPage(0);
Langkah 3: Mempersiapkan Aliran Konten
Anda dapat memasukkan berbagai jenis elemen data menggunakan objek dari kelas bernama PDPageContentStream. Anda perlu meneruskan objek dokumen dan objek halaman ke konstruktor kelas ini, oleh karena itu, buat instance kelas ini dengan meneruskan dua objek yang dibuat pada langkah sebelumnya seperti yang ditunjukkan di bawah ini.
PDPageContentStream contentStream = new PDPageContentStream(document, page);
Langkah 4: Mengatur Warna Non-stroke
Anda dapat menyetel warna non-goresan ke persegi panjang menggunakan setNonStrokingColor() metode kelas PDPageContentStream. Untuk metode ini, Anda harus meneruskan warna yang diperlukan sebagai parameter seperti yang ditunjukkan di bawah ini.
contentStream.setNonStrokingColor(Color.DARK_GRAY);
Langkah 5: Menggambar persegi panjang
Gambar persegi panjang dengan dimensi yang dibutuhkan menggunakan addRect()metode. Untuk metode ini, Anda perlu melewatkan dimensi persegi panjang yang akan ditambahkan seperti yang ditunjukkan di bawah ini.
contentStream.addRect(200, 650, 100, 100);
Langkah 6: Mengisi Persegi Panjang
Itu fill() metode dari PDPageContentStream kelas mengisi jalur antara dimensi yang ditentukan dengan warna yang dibutuhkan seperti yang ditunjukkan di bawah ini.
contentStream.fill();
Langkah 7: Menutup Dokumen
Terakhir tutup dokumen menggunakan close() metode dari PDDocument kelas seperti yang ditunjukkan di bawah ini.
document.close();
Contoh
Misalkan kita memiliki dokumen PDF bernama blankpage.pdf di jalan C:\PdfBox_Examples\ dan ini berisi satu halaman kosong seperti yang ditunjukkan di bawah ini.
Contoh ini menunjukkan cara membuat / menyisipkan persegi panjang dalam dokumen PDF. Di sini, kami akan membuat kotak di PDF Kosong. Simpan kode ini sebagaiAddRectangles.java.
import java.awt.Color;
import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
public class ShowColorBoxes {
public static void main(String args[]) throws Exception {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/BlankPage.pdf");
PDDocument document = PDDocument.load(file);
//Retrieving a page of the PDF Document
PDPage page = document.getPage(0);
//Instantiating the PDPageContentStream class
PDPageContentStream contentStream = new PDPageContentStream(document, page);
//Setting the non stroking color
contentStream.setNonStrokingColor(Color.DARK_GRAY);
//Drawing a rectangle
contentStream.addRect(200, 650, 100, 100);
//Drawing a rectangle
contentStream.fill();
System.out.println("rectangle added");
//Closing the ContentStream object
contentStream.close();
//Saving the document
File file1 = new File("C:/PdfBox_Examples/colorbox.pdf");
document.save(file1);
//Closing the document
document.close();
}
}
Kompilasi dan jalankan file Java yang disimpan dari command prompt menggunakan perintah berikut.
javac AddRectangles.java
java AddRectangles
Setelah dieksekusi, program di atas membuat persegi panjang dalam dokumen PDF yang menampilkan gambar berikut.
Rectangle created
Jika Anda memverifikasi jalur yang diberikan dan membuka dokumen yang disimpan - colorbox.pdf, Anda dapat mengamati bahwa sebuah kotak dimasukkan di dalamnya seperti yang ditunjukkan di bawah ini.