Mengonversi HTML ke file PDF di Java

Ikhtisar

Artikel ini menjelaskan bagaimana mengonversi HTML ke PDF menggunakan Java. Kodenya sangat sederhana, cukup muat HTML ke kelas Document dan simpan sebagai output PDF. Mengonversi MHTML ke PDF di Java juga serupa. Ini mencakup topik-topik berikut

Java HTML to PDF Converter Library

Aspose.PDF for Java adalah API manipulasi PDF yang memungkinkan Anda mengonversi dokumen HTML yang ada ke PDF dengan mulus. Proses konversi HTML ke PDF dapat disesuaikan dengan fleksibel.

Mengonversi HTML ke PDF

Contoh kode Java berikut menunjukkan cara mengonversi dokumen HTML ke PDF.

  1. Buat instance dari kelas HtmlLoadOptions.
  2. Inisialisasi objek Document.
  3. Simpan dokumen PDF keluaran dengan memanggil metode Document.save(String).
// Buka dokumen PDF sumber
Document document = new Document(DATA_DIR + "PDFToHTML.pdf")

// Instansiasi objek HTML SaveOptions
HtmlSaveOptions htmlsaveOptions = new HtmlSaveOptions();

// Simpan dokumen
document.save(DATA_DIR + "MultiPageHTML_out.html", htmlsaveOptions);

Konversi lanjutan dari HTML ke PDF

Mesin Konversi HTML memiliki beberapa opsi yang memungkinkan kita mengontrol proses konversi.

Dukungan Media Queries

  1. Buat LoadOptions HTML.
  2. Atur mode Cetak atau Layar.
  3. Inisialisasi objek Dokumen.
  4. Simpan dokumen PDF keluaran.

Media queries adalah teknik populer untuk memberikan lembar gaya yang disesuaikan ke perangkat yang berbeda. Kita dapat mengatur jenis perangkat menggunakan properti HtmlMediaType.

// Buat HTML LoadOptions
HtmlLoadOptions options = new HtmlLoadOptions();

// Atur mode Cetak atau Layar
options.setHtmlMediaType(HtmlMediaType.Print);

// Inisialisasi objek dokumen
String htmlFileName = Paths.get(DATA_DIR.toString(), "test.html").toString();
Document document = new Document(htmlFileName, options);

// Simpan dokumen PDF keluaran
document.save(Paths.get(DATA_DIR.toString(), "HTMLtoPDF.pdf").toString());
document.close();

Mengaktifkan (menonaktifkan) penyematan font

  1. Tambahkan LoadOptions Html baru.
  2. Aktifkan/Nonaktifkan penyematan font.
  3. Simpan Dokumen baru.

Halaman HTML sering menggunakan font (misalnya, font dari folder lokal, Google Fonts, dll). Kita juga dapat mengontrol penyematan font dalam dokumen dengan menggunakan properti IsEmbedFonts.

HtmlLoadOptions options = new HtmlLoadOptions();
// Aktifkan/Nonaktifkan penyematan font
options.setEmbedFonts(true);

Document document = new Document(DATA_DIR + "test_fonts.html", options);
document.save(DATA_DIR + "html_test.PDF");
document.close();

Mengelola pemuatan sumber daya eksternal

Mesin Konversi menyediakan mekanisme yang memungkinkan Anda mengontrol pemuatan sumber daya tertentu yang terkait dengan dokumen HTML.

Kelas HtmlLoadOptions memiliki properti CustomLoaderOfExternalResources yang dapat kita gunakan untuk mendefinisikan perilaku pemuat sumber daya.

HtmlLoadOptions options = new HtmlLoadOptions();

options.setCustomLoaderOfExternalResources(
        new LoadOptions.ResourceLoadingStrategy() {
            public LoadOptions.ResourceLoadingResult invoke(String resourceURI) {
                // Membuat sumber daya template kosong untuk menggantikan:
                LoadOptions.ResourceLoadingResult res = new LoadOptions.ResourceLoadingResult(new byte[] {});
                // Mengembalikan array byte kosong jika server i.imgur.com
                if (resourceURI.contains("i.imgur.com")) {
                    return res;
                } else {
                    // Memproses sumber daya dengan pemuat sumber daya default
                    res.setLoadingCancelled(true);
                    return res;
                }
            }   
});

Document document = new Document(DATA_DIR + "test.html", options);
document.save(DATA_DIR + "html_test.PDF");
document.close();    

Mengonversi MHTML ke PDF

MHTML, singkatan dari MIME HTML, adalah format arsip halaman web yang digunakan untuk menggabungkan sumber daya yang biasanya direpresentasikan oleh tautan eksternal (seperti gambar, animasi Flash, applet Java, dan file audio) dengan kode HTML menjadi satu file. Konten dari file MHTML dikodekan seolah-olah itu adalah pesan email HTML, menggunakan tipe MIME multipart/related.

Cuplikan kode berikut menunjukkan cara mengubah file MHTML ke format PDF dengan Java:

// Buat instance dari MhtLoadOptions untuk menentukan opsi pemuatan untuk
// file MHTML.
MhtLoadOptions options = new MhtLoadOptions();

// Tetapkan jalur dari file MHTML.
String mhtmlFileName = Paths.get(DATA_DIR.toString(), "samplefile.mhtml").toString();

// Muat file MHTML ke dalam objek Dokumen.
Document document = new Document(mhtmlFileName, options);

// Simpan dokumen sebagai file PDF.
document.save(Paths.get(DATA_DIR.toString(), "MarkdowntoPDF.pdf").toString());

// Tutup dokumen.
document.close();