Dalam senario moden, fail PDF ialah format dokumen yang digunakan secara meluas. Walau bagaimanapun, kadangkala kita perlu menukar fail PDF kepada format HTML untuk persembahan yang lebih baik pada halaman web. Nasib baik, menukar fail PDF kepada fail HTML adalah mudah dengan bahasa pengaturcaraan Java.
Artikel ini akan memperkenalkan proses menukar fail PDF kepada fail HTML, menggunakan bahasa pengaturcaraan Java, meliputi kandungan berikut:
Fail PDF (Format Dokumen Mudah Alih) ialah format untuk melihat, mencetak dan berkongsi fail pada platform yang berbeza. Reka letak dan format fail PDF adalah konsisten merentas platform, jadi fail PDF biasanya boleh digunakan untuk penerbitan, cetakan dan borang elektronik.
Fail HTML (Hypertext Markup Language) ialah bahasa standard untuk membina halaman Web terdiri daripada teks, imej, pautan, dsb. Penyemak imbas boleh menghuraikan fail HTML dan menjadikannya halaman web.
Perbezaan utama antara fail PDF dan fail HTML ialah reka letak format. Susun atur fail PDF adalah tetap, manakala susun atur fail HTML dilaraskan secara dinamik berdasarkan saiz skrin yang digunakan dalam penyemak imbas dan pilihan pengguna.
Java ialah bahasa pengaturcaraan yang digunakan secara meluas dengan API yang berkuasa dan komuniti sumber terbuka yang besar untuk membina pelbagai aplikasi. Untuk menukar fail PDF kepada fail HTML, anda perlu menggunakan perpustakaan PDF Java.
Pustaka PDF boleh menghuraikan fail PDF dan menukarnya kepada model objek boleh diedit. Dengan cara ini, fail PDF boleh diubah saiz, dipertingkatkan atau ditukar. Terdapat banyak pilihan untuk perpustakaan PDF yang digunakan dalam Java, tetapi artikel ini akan menggunakan perpustakaan PDFBox Apache.
PDFBox ialah perpustakaan Java sumber terbuka daripada Yayasan Perisian Apache yang boleh digunakan untuk memproses fail PDF. Ia menawarkan banyak ciri termasuk menghuraikan, mencipta dan mengedit fail PDF.
Dalam contoh ini, kami akan menggunakan PDFBox versi 2.x. Sila ambil perhatian bahawa kebergantungan PDFBox 2.x memerlukan Java 1.8 atau lebih tinggi.
Untuk menggunakan perpustakaan PDFBox, kami boleh menambah kebergantungan Maven berikut dalam alat binaan:
<dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> <version>2.0.21</version> </dependency> <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox-tools</artifactId> <version>2.0.21</version> </dependency>
Selepas memuat turun semua kebergantungan yang diperlukan dalam versi yang dipilih, kami boleh menggunakan The Perpustakaan PDFBox mengendalikan fail PDF. Langkah seterusnya ialah memproses setiap halaman fail PDF secara individu dan menukarnya menjadi teks.
HTML ialah bahasa penanda standard yang digunakan untuk membina halaman web terdiri daripada kod HTML dan fail CSS dan JavaScript luaran. Dalam contoh ini, kami akan menggunakan kod Java untuk menjana fail HTML yang lengkap.
Kami menggunakan enjin templat Freemarker untuk memperkenalkan kandungan dinamik dalam kod HTML. Freemarker ialah enjin templat popular yang menggabungkan templat dan data serta menghasilkan fail HTML akhir. Templat HTML adalah seperti berikut:
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>${title}</title> <style> ${css} </style> </head> <body> <div class="content"> ${content} </div> </body> <script> ${javascript} </script> </html>
Menggunakan templat ini, kita boleh meletakkan semua kandungan teks halaman PDF ke dalam pembolehubah ${content}
dan meletakkan lembaran gaya dan kod skrip ke dalam ${css}
dan ${javascript}
dalam pembolehubah.
Sekarang kita telah merangkumi semua langkah yang diperlukan, kita boleh mula menulis kod Java untuk menukar fail PDF.
import java.io.File; import java.io.IOException; import java.io.StringWriter; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.text.PDFTextStripper; import org.apache.pdfbox.tools.PDFToHTML; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; public class PDFToHTMLConverter { private static final String TEMPLATE_FILE = "src/main/resources/template.html"; private static final String OUTPUT_DIRECTORY = "./out/"; public static void main(String[] args) throws IOException, TemplateException { String sourcePdf = args[0]; File file = new File(sourcePdf); PDDocument document = PDDocument.load(file); PDFTextStripper pdfStripper = new PDFTextStripper(); int startPage = 1; int endPage = document.getNumberOfPages(); pdfStripper.setStartPage(startPage); pdfStripper.setEndPage(endPage); StringWriter writer = new StringWriter(); pdfStripper.writeText(document, writer); Configuration freemarkerCfg = new Configuration(Configuration.VERSION_2_3_28); freemarkerCfg.setDirectoryForTemplateLoading(new File("")); Template template = freemarkerCfg.getTemplate(TEMPLATE_FILE); String title = file.getName().replace(".pdf", ""); String content = writer.toString(); StringWriter cssWriter = new StringWriter(); PDFToHTML pdfToHtml = new PDFToHTML(); pdfToHtml.startConversion(document, cssWriter); String css = cssWriter.toString(); String javascript = ""; File outputDirectory = new File(OUTPUT_DIRECTORY); outputDirectory.mkdirs(); String htmlFileName = title + ".html"; File htmlFile = new File(outputDirectory, htmlFileName); StringWriter writerHtml = new StringWriter(); template.process( ImmutableMap.of("title", title, "content", content, "css", css, "javascript", javascript), writerHtml ); FileUtils.write(htmlFile, writerHtml.toString(), StandardCharsets.UTF_8); document.close(); } }
Dalam kod ini, kami mula-mula memuatkan fail PDF menggunakan kelas PDDocument
pustaka PDFBox. Kami kemudian mengekstrak kandungan teks daripada fail PDF menggunakan kelas PDFTextStripper
perpustakaan PDFBox.
Seterusnya, kami menggunakan enjin templat Freemarker untuk menjana fail HTML daripada templat HTML. Kami juga menggunakan kelas PDFToHTML
perpustakaan PDFBox untuk menjana fail CSS semasa menukar fail PDF. Akhir sekali, kami menulis semua kandungan ini ke dalam fail HTML yang lengkap.
Contoh Penggunaan:
java PDFToHTMLConverter.java input.pdf
Dalam contoh ini kami mengambil fail PDF sebagai input dan menjana fail HTML yang mengandungi teks dan CSS.
Selesai! Kami telah berjaya menukar fail PDF kepada fail HTML.
Artikel ini menerangkan cara menukar fail PDF kepada fail HTML menggunakan bahasa pengaturcaraan Java. Kami melihat dengan lebih mendalam perbezaan antara fail PDF dan fail HTML, memperkenalkan perpustakaan PDFBox dan menyediakan kod sampel untuk menjana fail HTML. Saya percaya bahawa pembaca telah menguasai kemahiran menukar fail PDF kepada fail HTML dan boleh menggunakannya dalam amalan.
Atas ialah kandungan terperinci Bagaimana untuk menukar fail PDF kepada fail HTML menggunakan Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!