2016-06-02 16 views
5

Tôi đang cố gắng sử dụng iText 7 trong Java. Bạn muốn chuyển đổi HTML/XHTML sang PDF.xmlworker bị thiếu trong iText 7 core

Rõ ràng xmlworker.jar không tồn tại trong iText 7 core.

Thay thế cho iText 7 là gì?

Bất kỳ giải pháp nào?

+0

Hiện tại, XmlWorker không khả dụng cho iText7 –

+0

Cảm ơn bạn đã trả lời. Tôi đánh giá các tính năng của iText 7. Tôi nghe nói rằng hỗ trợ và cập nhật dường như không còn có sẵn cho iText 5 sau năm 2017, lịch trình phát hành xmlworker trong iText 7 là gì? Liệu tính năng này không còn khả dụng sau iText 7 hay không? –

+0

Cảm ơn sự giúp đỡ của bạn. –

Trả lời

4

Công nhân XML là điều tiếp theo trên bản đồ đường tại iText, vì vậy có, nó sẽ có sẵn cho iText 7. Nhưng trước tiên chúng ta cần hoàn thành cổng iText 7 cho Java để iText 7 cho C# và chúng tôi vẫn làm việc chăm chỉ trên tài liệu iText 7. Xem ví dụ: iText 7: Building Blocks.

Trong nguồn mở, một bản phát hành thường, một bản phát hành sớm. Thay vì giữ tất cả mã đóng cho đến khi mọi thứ hoàn tất, chúng tôi đã chọn cách phát hành mã nguồn mở: mọi thứ đã sẵn sàng, được phát hành. Mọi thứ chưa sẵn sàng, sẽ được phát hành ngay khi nó sẵn sàng.

Đại tu chính của iText yêu cầu chúng tôi viết lại công nhân XML. Lợi ích: iText 7 được viết bằng XML Worker. Tất cả các mục được đánh dấu bằng khóa trong hướng dẫn tôi đã đề cập là "mới trong iText 7", ví dụ: kế thừa các thuộc tính (cho phép chúng ta áp dụng CSS theo cách tốt hơn).

Bạn sẽ thấy những cải thiện đáng kể khi hoàn thành.

+0

Cảm ơn bạn đã cung cấp thông tin. –

+0

@Bruno Câu trả lời này vẫn hợp lệ. Tôi thấy một html2pdf trên trang web. – HopeKing

+0

@HopeKing Có, chúng tôi đã phát hành [pdfHTML] (https://itextpdf.com/itext7/pdfHTML) và có, nó là một chút khó hiểu rằng tên gói/Maven id là 'html2pdf' (html2pdf = pdfHTML). Bạn có thể tìm thấy hướng dẫn tại đây: https://developers.itextpdf.com/content/itext-7-converting-html-pdf-pdfhtml –

2

iText pdfHTML mô-đun đã được phát hành để thay thế cho XmlWorker. Phiên bản C# có thể được tải xuống từ NuGet Gallery. Phiên bản Java có thể được tải xuống từ Artifactory.

Lớp chính bạn đang tìm kiếm là HtmlConverter. Nó có rất nhiều quá tải phương thức tĩnh để chuyển đổi html hoặc thành danh sách các phần tử để được thêm vào cấu trúc bố cục trong tương lai, cho toàn bộ trường hợp com.itextpdf.layout.Document hoặc quyền đối với tệp .pdf.

Ví dụ về chuyển đổi .html tập tin để .pdf:

HtmlConverter.convertToPdf(new File(htmlFilePath), new File(outPdfFilePath)); 

Ví dụ về chuyển đổi html để yếu tố định dạng:

String html = "<p>Hello world!</p>"; 
List<IElement> lst = HtmlConverter.convertToElements(html); 

Ngoài ra, pdfHTML bây giờ hỗ trợ @media quy tắc, vì vậy bạn có thể muốn cung cấp một cấu hình sẽ được sử dụng để áp dụng CSS, ví dụ: sử dụng hướng dẫn @media print, bạn sẽ cần phải thiết lập MediaDeviceDescription tương ứng:

ConverterProperties properties = new ConverterProperties() 
    .setMediaDeviceDescription(new MediaDeviceDescription(MediaType.PRINT)); 
HtmlConverter.convertToPdf(new File(htmlPath), new File(outPdfPath), properties); 

Để xác định tập hợp các phông chữ mà bạn muốn sử dụng khi chuyển đổi HTML sang PDF, bạn cũng có thể thiết lập một FontProvider:

FontProvider fontProvider = new FontProvider(); 
fontProvider.addDirectory(fontsDir) 
properties.setFontProvider(fontProvider); 

Hoặc bạn có thể sử dụng DefaultFontProvider và chỉ định các thiết lập của nó trong các nhà xây dựng:

FontProvider fontProvider = new DefaultFontProvider(false, false, true); 
properties.setFontProvider(fontProvider); 

DefaultFontProvider có ba tham số trong constructor: đầu tiên là để xác định xem có nên sử dụng phông chữ chuẩn (Helvetica, Courier, Times v.v.), thứ hai để chỉ định xem có sử dụng phông chữ được chuyển với pdfHTML và thứ ba để chỉ định có tải phông chữ hệ thống hay không. DefaultFontProvider chỉ là một phân lớp của FontProvider và do đó bạn luôn có thể gọi addDirectory hoặc addFont sau khi cá thể đã được tạo.

+0

Cảm ơn bạn đã cung cấp thông tin. –