Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk menukar html ke pdf di Java

Bagaimana untuk menukar html ke pdf di Java

PHPz
PHPzasal
2023-04-21 11:27:5014383semak imbas

Dalam beberapa tahun kebelakangan ini, dengan kemajuan pendigitalan yang berterusan, permintaan untuk dokumen elektronik telah menjadi lebih tinggi dan lebih tinggi. Dalam kerja sebenar, kita sering perlu menukar fail HTML kepada fail PDF, dan dalam proses ini kita perlu menggunakan teknologi pengaturcaraan Java. Artikel ini akan memperkenalkan kaedah pelaksanaan Java untuk menukar HTML kepada PDF daripada tiga aspek berikut:

1 Gunakan iText untuk menukar HTML kepada PDF

iText ialah perpustakaan PDF Java yang popular yang boleh menukar. HTML kepada PDF. iText menghuraikan fail HTML dan membina semula halaman menggunakan bahasa penanda PDF. Berikut ialah kod utama untuk menggunakan iText untuk menukar HTML kepada PDF:

Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("output.pdf"));
document.open();
HTMLWorker htmlWorker = new HTMLWorker(document);
String html = "<html><head></head><body><p>Hello World</p></body></html>";
htmlWorker.parse(new StringReader(html));
document.close();

Kod di atas mencipta objek Document untuk menjana fail PDF, dan kemudian menggunakan PDFWriter untuk menulis objek Document ke dalam aliran output ke menjana dokumen PDF. HTMLWorker kemudiannya digunakan untuk menghuraikan dokumen HTML dan menambahkannya ke halaman PDF. Akhir sekali, tutup objek Dokumen untuk melengkapkan penjanaan fail PDF.

2. Gunakan Flying Saucer untuk menukar HTML kepada PDF

Satu lagi alat Java yang boleh digunakan untuk menukar HTML kepada PDF ialah Flying Saucer. Ia adalah pemapar PDF sumber terbuka dan percuma yang boleh menukar HTML kepada dokumen format PDF. Berikut ialah contoh kod untuk menukar HTML kepada PDF menggunakan Flying Saucer:

DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = documentBuilderFactory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(htmlContent)));
ITextRenderer iTextRenderer = new ITextRenderer();
iTextRenderer.setDocument(document, null);
iTextRenderer.layout();
OutputStream outputStream = new FileOutputStream("output.pdf");
iTextRenderer.createPDF(outputStream);
outputStream.close();

Kod di atas terlebih dahulu menghuraikan dokumen HTML dan membacanya ke dalam Dokumen. Kemudian, gunakan kaedah susun atur() ITextRenderer untuk menyusun dokumen. Akhir sekali, gunakan kaedah createPDF() untuk menjana fail PDF ke dalam outputStream.

3. Gunakan PDFBox untuk menukar HTML kepada PDF

PDFBox ialah perpustakaan PDF Java sumber terbuka yang popular yang menyediakan banyak alatan untuk mencipta dan memproses fail PDF. Ia juga menyediakan beberapa kod contoh HTML ke PDF, kod sampel lengkap boleh dilihat di sini.

Berikut ialah contoh kod untuk penukaran HTML kepada PDF menggunakan PDFBox:

PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);
PDPageContentStream contentStream = new PDPageContentStream(document, page);
PDRectangle mediaBox = page.getMediaBox();
float margin = 72;
float startX = mediaBox.getLowerLeftX() + margin;
float startY = mediaBox.getUpperRightY() - margin;
float width = mediaBox.getWidth() - 2 * margin;
String html = "<html><head></head><body><p>Hello World!</p></body></html>";
ByteArrayInputStream bais = new ByteArrayInputStream(html.getBytes());
InputStreamReader isr = new InputStreamReader(bais);
COSDocument cosDoc = new COSDocument();
PDFOperator.reset();
PDPageTree pageTree = new PDPageTree();
PDDOMParser parser = new PDDOMParser(cosDoc);
parser.parse(isr);
PDDocumentOutline outline = new PDDocumentOutline();
document.getDocumentCatalog().setDocumentOutline(outline.getRootNode());
PDOutlineItem item = new PDOutlineItem();
item.setTitle("PDFBox");
PDOutlineItem childItem = new PDOutlineItem();
childItem.setTitle("Hello World 2");
item.addLast(childItem);
outline.getRootNode().addLast(item);
PDAcroForm form = new PDAcroForm(cosDoc);
document.getDocumentCatalog().setAcroForm(form);
PDPageContentStream cs = new PDPageContentStream(document, page);
PDFTextStripper stripper = new PDFTextStripper();
stripper.setStartPage(0);
stripper.setEndPage(1);
String text = stripper.getText(document);
cs.beginText();
cs.setFont(PDType1Font.COURIER, 14);
cs.drawString(text, 100, 100);
cs.endText();
contentStream.close();
document.save("output.pdf");
document.close();

Kod di atas mula-mula mencipta objek PDDocument dan menambah halaman baharu padanya. Kemudian, objek PDPageContentStream dicipta yang digunakan untuk melukis kandungan pada halaman. Seterusnya, gunakan PDDOMParser untuk menghuraikan HTML ke dalam objek COSDocument. Akhir sekali, kandungan ditulis ke aliran output untuk menghasilkan fail PDF.

Ringkasan

HTML ke PDF mempunyai rangkaian aplikasi yang sangat luas dalam proses pengeluaran sebenar, dan tugas penting ini boleh dicapai dengan mudah melalui pengaturcaraan Java. Artikel ini memperkenalkan cara menukar HTML kepada PDF menggunakan tiga alatan: iText, Flying Saucer dan PDFBox. Walau apa pun keadaannya, pembangunan boleh dibuat dengan lebih pantas dan mudah dengan memilih kaedah yang paling sesuai dengan keperluan projek anda.

Atas ialah kandungan terperinci Bagaimana untuk menukar html ke pdf di Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn