ITextRenderer HTML sang PDF

Trong khi chúng tôi tiếp tục giới thiệu các thư viện khác nhau để tạo PDF từ HTML bằng các ngôn ngữ khác nhau. Bài viết này sẽ mở rộng về cách tạo pdf từ các tệp HTML trong Java bằng cách sử dụng openhtmltopdf, itextpdf và Đĩa bay và sự khác biệt của chúng

ITextRenderer HTML sang PDF

thư viện

openhtmltopdf

Openhtmltopdf là một thư viện Java mã nguồn mở để chuyển đổi ML/XHTML thành PDF hoặc hình ảnh. Nó sử dụng thư viện mở PDFBOX để tạo PDF sau khi kết xuất XHTML

Apache PDFBox là thư viện mã nguồn mở Java hỗ trợ tạo và chuyển đổi tài liệu PDF

Trong hướng dẫn này, chúng ta sẽ sử dụng lớp PdfRendererBuilder từ thư viện, cung cấp các phương thức khác nhau để tạo tệp PDF.
chạy(). Chạy chuyển đổi XHTML/XML sang PDF
toStream(). Một luồng đầu ra để xuất PDF kết quả.
withUri(). Cung cấp URI (Mã định danh tài nguyên thống nhất) để chuyển đổi sang PDF.
Bạn có thể tìm hiểu thêm về các phương pháp này trong tài liệu tại đây.

Mã ví dụ

Ví dụ mã sau đây cung cấp cách sử dụng đơn giản cho openhtmltopdf bằng cách tạo URI từ tệp HTML, chuyển nó tới trình tạo để chuyển đổi nó thành luồng và sau đó chạy chuyển đổi XML/XHTML sang PDF bằng Trình kết xuất

import java.io.FileOutputStream;
import java.io.OutputStream;
import com.openhtmltopdf.pdfboxout.PdfRendererBuilder;

public class SimpleUsage
{
    public static void main(String[] args) throws Exception {
        try (OutputStream os = new FileOutputStream("out.pdf")) {
            PdfRendererBuilder builder = new PdfRendererBuilder();
            builder.useFastMode();
           
 builder.withUri("file:in.htm");
	// set output to an output stream set 
            builder.toStream(os);
	// Run the XHTML/XML to PDF conversion and 
            builder.run();
            //prints the message if the PDF is created successfully
            System.out.println("PDF created");
        }
    }
}

Phụ thuộc Maven

Maven là công cụ chuẩn hóa quy trình xây dựng vì nó chiếm hầu hết các tác vụ xây dựng.
Chúng ta cần thêm các phụ thuộc sau vào POM. xml để đoạn mã trên hoạt động và chạy.

 
    
        
        com.openhtmltopdf
        openhtmltopdf-core
        ${openhtml.version}
    

    
        
        com.openhtmltopdf
        openhtmltopdf-pdfbox
        ${openhtml.version}
    
 

Bạn có thể tìm thêm thông tin về openhtmltopdf tại đây

iTextpdf

Một thư viện cung cấp API để tạo tài liệu PDF, RTF và HTML. IText có cấu trúc phân cấp; . Có một lớp con từ Cụm từ như “Đoạn văn”, bản thân nó chứa nhiều lớp con. Trong hướng dẫn này, chúng tôi sẽ sử dụng một số lớp iText.
PdfWriter. Một lớp DocWriter cho PDF; .
Trợ giúp XMLWorker. Một lớp trợ giúp để phân tích luồng XHTML/CSS hoặc XML thành PDF.

Bạn có thể tìm hiểu thêm về các lớp này từ tài liệu PdfWriter, XMLWorkerHelper

Mã ví dụ

Ví dụ về mã xỉa chỉ minh họa cách đơn giản nhất để tạo PDF từ tệp HTML bằng cách khởi tạo một cá thể đơn từ lớp XMLWorkerHelper, phân tích cú pháp tệp HTML và chuyển luồng đã phân tích cú pháp sang cá thể pdfWriter để tạo PDF

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.tool.xml.XMLWorkerHelper;

public class Html2Pdf {
    private static final String HTML = "html.html";

    public static void main(String[] args) {
        try {
            Document document = new Document();
	// this method is used to get an instance of the PdfWriter.
            PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("html.pdf"));
            document.open();
	// Get a Singleton XMLWorkerHelper
	// parseXHtml: Parses the xml data in the given reader 
            XMLWorkerHelper.getInstance().parseXHtml(writer, document, new FileInputStream(HTML));
            document.close();
        } catch (IOException | DocumentException e) {
            e.printStackTrace();
        }
    }
}

Phụ thuộc Maven

Chúng ta cần thêm các phụ thuộc sau vào POM. xml để đoạn mã trên hoạt động và chạy


   com.itextpdf
   itextpdf
   ${itextpdf.version}


   com.itextpdf.tool
   xmlworker
   ${xmlworker.version}

Bạn có thể tìm thêm thông tin về iText tại đây

Đĩa bay

Đĩa bay là một thư viện Java để chuyển đổi XML/XHTML thành PDF hoặc hình ảnh;

Mã ví dụ

Mã sau trình bày cách sử dụng thư viện Đĩa bay bằng cách kết hợp thư viện Jsoup cùng với xhtmlrenderer, là thư viện đĩa bay.
Jsoup là một thư viện Java nguồn mở để phân tích cú pháp, trích xuất và thao tác dữ liệu từ các tệp HTML. Vì Jsoup mong đợi một chuỗi, trước tiên chúng ta cần mở tệp HTML dưới dạng đối tượng Tệp trước rồi chuyển nó vào thư viện JSOUP; .
Sau khi phân tích cú pháp tệp HTML, chúng tôi chuyển dữ liệu tới thư viện đĩa bay FLying để chuyển đổi thành PDF.

import java.io.*;
import java.io.FileOutputStream;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

import org.xhtmlrenderer.pdf.ITextRenderer;

public class Main {

   public static void main(String[] args) throws Exception {

       try (OutputStream os = new FileOutputStream("out.pdf")) {
           // opening the file from the path
           File in = new File("html.html");
           // Jsoup expects a string
           Document document = Jsoup.parse(in, null);

           //Convert the HTML format into XHTML
      	document.outputSettings().syntax(Document.OutputSettings.Syntax.xml);

           ITextRenderer iTextRenderer = new ITextRenderer();
           iTextRenderer.setDocumentFromString(document.html());
           iTextRenderer.layout();
           iTextRenderer.createPDF(os);
           System.out.println("PDF created");
       }
   }
}

Phụ thuộc Maven

Chúng ta cần thêm các phụ thuộc sau vào POM. xml để đoạn mã trên hoạt động và chạy


   org.jsoup
   jsoup
   1.14.3


   org.xhtmlrenderer
   flying-saucer-core
   9.1.22



   org.xhtmlrenderer
   flying-saucer-pdf-openpdf
   9.1.22

Bạn có thể tìm thêm thông tin ở đây

so sánh

Sau khi giới thiệu từng thư viện chúng tôi có, chúng tôi cần biết thư viện nào phù hợp với ứng dụng của mình. Đầu tiên, chúng ta cần làm nổi bật Đĩa bay dựa trên iText, có nghĩa là những thay đổi nhỏ giữa chúng. Tuy nhiên, openhtmltopdf dựa trên một thư viện khác có tên là PDFBOX. PDFBOX là một thư viện nguồn mở, được duy trì tốt với giấy phép LGPL, trong khi đó, iText là thư viện giấy phép AGPL. Openhtmltopdf cũng được coi là nhanh hơn Đĩa bay

iText có thể được coi là tiết kiệm tài nguyên hơn nhiều so với PDFBOX vì nó xử lý từng đoạn văn bản và nó cũng có kiến ​​trúc hướng sự kiện. Mặt khác, openhtmltopdf cung cấp plugin tích hợp cho SVG và MathML, đồng thời hỗ trợ tốt hơn cho các biến đổi CSS3 và một trong những nhược điểm của openhtmltopdf là không hỗ trợ phông chữ OpenType

Phần kết luận

Trong bài viết này, chúng tôi đã nói về cách tạo pdf từ các tệp HTML bằng Java. Sau đó, chúng tôi giới thiệu sơ lược về một số công cụ/thư viện như openhtmltopdf, iText và Flying Saucer. Chúng tôi cũng so sánh chúng ở các thuộc tính khác nhau như độ phức tạp, kích thước của tệp được tạo, độ phân giải và Tính năng

Cuối cùng, nếu bạn muốn có một công cụ với tất cả các tính năng của các thư viện này và hơn thế nữa, trong trường hợp đó, tôi khuyên bạn nên xem qua APITemplate. io. mẫu API. io là một công cụ có thể giúp bạn tạo tệp PDF nhanh chóng với API tạo PDF qua đám mây và tương thích với CSS, JavaScript và Python. Nó cũng đi kèm với các mẫu được xác định trước mà bạn có thể sử dụng lại và chỉnh sửa

  • ITextRenderer HTML sang PDF
    Ahmed Hashesh

  • Người học, Người viết nội dung, Kỹ sư SW nhúng, Người đam mê học máy và Xe tự hành

    Làm cách nào để chuyển đổi HTML sang PDF theo chương trình?

    Các bước chuyển đổi HTML sang PDF trong C# .
    Tải tài liệu HTML bằng cách sử dụng một trong các hàm tạo HTMLDocument(). .
    Tạo một đối tượng PdfSaveOptions mới
    Sử dụng phương thức ConvertHTML() của lớp Converter để lưu HTML dưới dạng tệp PDF. .
    Tệp PDF sẽ được lưu vào đường dẫn đã chỉ định

    Làm cách nào để chuyển đổi HTML sang PDF bằng iText trong Java?

    Tạo tệp PDF từ HTML có thể được thực hiện bằng thư viện iText Java. iText có add-on cho phép chuyển tài liệu HTML sang PDF. .
    convertToDocument(). trả về phiên bản Tài liệu
    convertToElements(). trả về một danh sách các trường hợp iText IEument
    convertToPdf(). phương pháp này chuyển đổi HTML sang PDF

    Làm cách nào để chuyển đổi nội dung HTML sang PDF trong Java?

    Chuyển đổi HTML sang PDF bằng URL trong Java .
    Tạo và khởi tạo đối tượng URL
    Đưa trang web vào đối tượng InputStream
    Tạo đối tượng Document và khởi tạo nó với các đối tượng InputStream và HtmlLoadOptions
    Lưu luồng HTML dưới dạng PDF bằng Tài liệu. phương thức lưu ()

    Làm cách nào để chuyển đổi HTML sang PDF bằng Pdfsharp?

    Cách sử dụng Pdfsharp trong C# .
    Tải xuống tệp Pdfsharp qua NuGet và cài đặt nó
    Tạo PDF từ kiểu nhập văn bản HTML
    Kiểm tra các trang ASPX thành PDF
    Sử dụng CSS3 với Tài liệu PDF
    So sánh trên Windows Forms