Html2pdf java

Dự án này dựa trên wkhtmltopdf, giúp chuyển đổi tài liệu HTML thành PDF. Truy cập vào wkhtmltopdf được thực hiện thông qua JNA, được hiển thị thông qua một lớp thân thiện với Java

Hiểu rồi

lớp

compile 'io.woo:htmltopdf:1.0.8'

maven

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>

Bắt đầu

Các ví dụ sau đây đủ để giúp bạn bắt đầu, tuy nhiên, có thể khám phá thêm nhiều tùy chọn khác bằng cách xem xét các phương pháp của

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
23 và
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
24

Lưu HTML dưới dạng tệp PDF

boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forHtml("

Apples, not oranges

"
)) .convert("/path/to/file.pdf");

Lưu trang web từ URL dưới dạng tệp PDF

boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forUrl("https://github.com/wooio/htmltopdf-java"))
    .convert("/path/to/file.pdf");

Lưu nhiều đối tượng dưới dạng tệp PDF

boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forUrl("https://github.com/wooio/htmltopdf-java"))
    .object(HtmlToPdfObject.forHtml("

This is the second object...

"
)) // ... .convert("/path/to/file.pdf");

Chuyển đổi sang InputStream (thay vì lưu dưới dạng tệp)

Việc chuyển đổi thành InputStream sẽ hữu ích nếu bạn định trả lại tài liệu PDF kết quả dưới dạng phản hồi HTTP hoặc thêm nó dưới dạng tệp đính kèm email

HtmlToPdf htmlToPdf = HtmlToPdf.create()
    // ...
    .object(HtmlToPdfObject.forUrl("https://github.com/wooio/htmltopdf-java"));

try (InputStream in = htmlToPdf.convert()) {
    // "in" has PDF bytes loaded
} catch (HtmlToPdfException e) {
    // HtmlToPdfException is a RuntimeException, thus you are not required to
    // catch it in this scope. It is thrown when the conversion fails
    // for any reason.
}

hạn chế đồng thời

Mặc dù thư viện an toàn theo luồng, rất tiếc, nó không thể thực hiện chuyển đổi đồng thời. Vì wkhtmltopdf sử dụng Qt phía sau hậu trường để hiển thị trang web, nên có một chuỗi duy nhất thực hiện hiển thị như vậy trên một quy trình duy nhất. Do đó, tại thời điểm này, chỉ có thể thực hiện một chuyển đổi cùng một lúc cho mỗi quy trình

Xử lý sự cố

Thiếu phụ thuộc bản địa

Nếu bạn nhận được ngoại lệ sau

java.lang.UnsatisfiedLinkError: Unable to load library '/tmp/io.woo.htmltopdf/wkhtmltox/0.12.5/libwkhtmltox.so': Native library (tmp/io.woo.htmltopdf/wkhtmltox/0.12.5/libwkhtmltox.so) not found in resource path

Sau đó, điều đó có thể có nghĩa là một trong những phụ thuộc riêng của wkhtmltopdf không được đáp ứng. Có thể đáng để kiểm tra xem các gói sau đã được cài đặt chưa

Trong chương này, chúng ta sẽ chuyển đổi một tệp HTML đơn giản sang tài liệu PDF theo nhiều cách khác nhau. Nội dung của tệp HTML sẽ bao gồm tiêu đề "Test", đoạn "Xin chào thế giới" và hình ảnh đại diện cho logo iText

Cấu trúc của các ví dụ

Tất cả các ví dụ xuyên suốt cuốn sách này sẽ có cấu trúc tương tự nhau.

ĐẦU VÀO

Đối với đầu vào, chúng tôi sẽ cung cấp cú pháp HTML. Trong hướng dẫn này, chúng ta sẽ sử dụng HTML 


public static String BASEURI = "src/main/resources/html/";
public static String SRC = String.Format("{0}hello.html", BASEURI);
6, đường dẫn đến tệp HTML hoặc – trong chương 4 – đường dẫn đến tệp XML cùng với đường dẫn đến tệp XSLT để chuyển đổi XML sang HTML

Trong ví dụ đầu tiên, C01E01_HelloWorld. java, HTML được cung cấp dưới dạng 


public static String BASEURI = "src/main/resources/html/";
public static String SRC = String.Format("{0}hello.html", BASEURI);
6

public String HTML = "

Test

Hello World

";

Trong các ví dụ khác, chẳng hạn như C01E03_HelloWorld. java, chúng ta sẽ sử dụng hai hằng số

  • một 

    
    public static String BASEURI = "src/main/resources/html/";
    public static String SRC = String.Format("{0}hello.html", BASEURI);
    
    8 hằng số cho đường dẫn đến thư mục mẹ nơi tìm HTML nguồn và các tài nguyên như hình ảnh và CSS, và

  • một 

    
    public static String BASEURI = "src/main/resources/html/";
    public static String SRC = String.Format("{0}hello.html", BASEURI);
    
    9 hằng số với đường dẫn đến tệp HTML nguồn đó

Ví dụ

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
2____7

ĐẦU RA

Chúng tôi sẽ sử dụng một cấu trúc tương tự cho đầu ra

  • một 

    <dependency>
      <groupId>io.woogroupId>
      <artifactId>htmltopdfartifactId>
      <version>1.0.8version>
      <scope>compilescope>
    dependency>
    40 hằng số cho đường dẫn đến thư mục mà chúng tôi sẽ ghi tệp PDF thu được và

  • một 

    <dependency>
      <groupId>io.woogroupId>
      <artifactId>htmltopdfartifactId>
      <version>1.0.8version>
      <scope>compilescope>
    dependency>
    41 hằng số với đường dẫn đến tệp PDF đó

Ví dụ

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
4
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
7

PHƯƠNG PHÁP CHÍNH

Phương pháp chính của tất cả các ví dụ trong cuốn sách này sẽ không khác nhiều so với phương pháp của ví dụ đầu tiên của chúng tôi

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
8
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
9

Trước tiên, chúng tôi tải tệp giấy phép iText. Đây là một tệp XML chứa khóa cấp phép để sử dụng iText. Bạn có thể không cần mã cấp phép này nếu bạn đang sử dụng iText và pdfHTML trong ngữ cảnh của dự án AGPL. Tuy nhiên, bạn sẽ cần tiện ích bổ sung pdfCalligraph cho các ví dụ quốc tế hóa trong chương 6 và tiện ích bổ sung pdfCalligraph không có sẵn theo AGPL;

Khóa cấp phép mà chúng tôi đang sử dụng trong các ví dụ của cuốn sách này tương tự như khóa bạn sẽ nhận được nếu mua giấy phép thương mại để sử dụng iText 7, pdfHTML và pdfCalligraph trong ngữ cảnh nguồn đóng

Sau đó, chúng tôi tạo thư mục đích trong trường hợp nó chưa tồn tại, tiếp theo là phương pháp 

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
42/
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
43. Chúng ta có thể thực hiện phương pháp này theo nhiều cách khác nhau

Chuyển đổi HTML sang PDF

Việc triển khai phương thức 

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
42/
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
43 của C01E01_HelloWorld. ví dụ java rất đơn giản. Cơ thể của nó bao gồm một dòng duy nhất

boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forHtml("

Apples, not oranges

"
)) .convert("/path/to/file.pdf");
4
boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forHtml("

Apples, not oranges

"
)) .convert("/path/to/file.pdf");
5

Đối tượng 

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
46 có nhiều lựa chọn phương thức 
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
47/
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
48 tĩnh khác nhau lấy các tham số khác nhau tùy thuộc vào trường hợp sử dụng. Trong ví dụ đầu tiên, tham số đầu tiên 
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
49 là 

public static String BASEURI = "src/main/resources/html/";
public static String SRC = String.Format("{0}hello.html", BASEURI);
6 có giá trị như sau

boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forUrl("https://github.com/wooio/htmltopdf-java"))
    .convert("/path/to/file.pdf");
1____120

Html2pdf java

Hình 1. 1. chuyển đổi một đoạn mã HTML thành PDF

Hãy giới thiệu một hình ảnh và sử dụng những điều sau đây 


public static String BASEURI = "src/main/resources/html/";
public static String SRC = String.Format("{0}hello.html", BASEURI);
6

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
21

Đoạn mã HTML này chứa liên kết tương đối đến tệp hình ảnh 

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
72 trong thư mục con có tên 
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
73. iText không thể đoán được nơi tìm thư mục con này, do đó chúng tôi sẽ định cấu hình URI cơ sở cho quá trình chuyển đổi

Việc này được thực hiện bằng cách sử dụng 

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
74  (Java/. NET), như được minh họa trong phương thức 
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
42/
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
43 của C01E02_HelloWorld. ví dụ java

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
22
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
23

Chúng tôi tạo một 

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
74 (Java/. NET) và chúng tôi đặt URI cơ sở thành thư mục mẹ của thư mục 
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
73 nơi iText có thể tìm thấy tệp 
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
72

Hình 1. 2 hiển thị kết quả

Html2pdf java

Hình 1. 2. chuyển đổi đoạn mã HTML có chứa tham chiếu đến hình ảnh

Trong hầu hết các ví dụ tiếp theo, chúng tôi sẽ không sử dụng HTML được lưu trữ trong một 


public static String BASEURI = "src/main/resources/html/";
public static String SRC = String.Format("{0}hello.html", BASEURI);
6. Thay vào đó, chúng tôi sẽ chuyển đổi tệp HTML trên đĩa thành tệp trên đĩa

Đối với các ví dụ còn lại trong chương này, chúng tôi sẽ sử dụng tệp có tên 

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
81 được hiển thị trong hình 1. 3

Html2pdf java

Hình 1. 3. xin chào. html được hiển thị trong trình duyệt cũng như trong trình soạn thảo văn bản

Có nhiều cách khác nhau để chuyển đổi tệp này thành tài liệu PDF

Trong C01E03_HelloWorld. ví dụ java, chúng tôi sử dụng các đối tượng 

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
82 / 
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
83 

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
24
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
25

Tham số đầu tiên của phương pháp 

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
47/
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
48 đề cập đến tệp HTML nguồn, tham số thứ hai cho tệp PDF đích. Trong trường hợp này, chúng tôi không cần đặt bất kỳ thuộc tính chuyển đổi nào. Theo mặc định, iText sẽ sử dụng thư mục mẹ của tệp này làm URI cơ sở

Điều này không hoạt động đối với C01E04_HelloWorld. java ví dụ nơi chúng tôi sử dụng các đối tượng 

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
86/
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
87 và 
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
88/
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
87 thay vì các đối tượng 
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
82/
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
83 

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
26
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
27

Bạn không thể truy xuất cấp độ gốc ở đây, do đó, chúng tôi cần chuyển URI cơ sở tới trình chuyển đổi bằng cách sử dụng

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
74 (Java/. NET) ví dụ. Các tệp PDF kết quả của ví dụ thứ ba và thứ tư này trông giống hệt với tệp PDF kết quả của ví dụ thứ hai được hiển thị trong hình 1. 2. Bản PDF kết quả của ví dụ thứ năm, C01E05_HelloWorld cũng vậy. java

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
28
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
29

Trong trường hợp này, chúng tôi sử dụng 

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
93 (Java/. NET) thay vì một phiên bản 
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
88/
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
87. Sử dụng 
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
93 (Java/. NET) có thể hữu ích nếu bạn muốn đặt một số thuộc tính trình ghi

Để biết thêm thông tin về thuộc tính của người viết, vui lòng đọc Chương 7 của iText 7. Khối xây dựng  Hướng dẫn Java, có tiêu đề "Xử lý sự kiện; đặt tùy chọn trình xem và thuộc tính máy in. "

Trong ví dụ này, chúng tôi tạo tệp PDF ở chế độ nén hoàn toàn. Đối với mắt người, tệp PDF thu được trông giống hệt nhau, nhưng khi bạn so sánh kích thước tệp của tệp PDF được tạo trong ví dụ 4 với kích thước tệp của tệp PDF được tạo trong ví dụ này, bạn sẽ thấy rằng việc nén hoàn toàn đã chiếm được một số byte

Hình 1. 4 hiển thị 3.430 byte khi sử dụng tính năng nén như đã thực hiện trong PDF 1. 0 to PDF 1. 4; . 5. Sự khác biệt đó có vẻ nhỏ, nhưng tệp PDF của bạn càng có nhiều đối tượng thì việc sử dụng tính năng nén hoàn toàn càng có ý nghĩa

Html2pdf java

Hình 1. 4. so sánh kích thước tập tin

Trong C01E06_HelloWorld. java, chúng tôi đã thay thế 

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
93 (Java/. NET) với tham số 
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
98 (Java/. NET) tham số


public static String BASEURI = "src/main/resources/html/";
public static String SRC = String.Format("{0}hello.html", BASEURI);
0

public static String BASEURI = "src/main/resources/html/";
public static String SRC = String.Format("{0}hello.html", BASEURI);
1

Sử dụng 

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
98 (Java/. NET) sẽ hợp lý nếu bạn muốn định cấu hình một tính năng tại 
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
98 (Java/. NET) cấp độ. Trong trường hợp này, chúng tôi giới thiệu dòng
boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forHtml("

Apples, not oranges

"
)) .convert("/path/to/file.pdf");
41/
boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forHtml("

Apples, not oranges

"
)) .convert("/path/to/file.pdf");
42, hướng dẫn iText tạo PDF được gắn thẻ

Hình 1. 5 hiển thị tệp PDF kết quả với bảng Thẻ được mở

Html2pdf java

Hình 1. 5. tạo PDF được gắn thẻ

Nhìn vào bảng Tags, bạn có thể thấy cấu trúc của nội dung. Khi di chuột qua hình ảnh, bạn sẽ thấy giá trị của thuộc tính 

boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forHtml("

Apples, not oranges

"
)) .convert("/path/to/file.pdf");
43 của thẻ 
boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forHtml("

Apples, not oranges

"
)) .convert("/path/to/file.pdf");
44 dưới dạng chú giải công cụ

Để biết thêm thông tin về PDF được gắn thẻ, vui lòng đọc Chương 7 của iText 7. Hướng dẫn Khởi động, có tựa đề "Tạo tài liệu PDF/UA và PDF/A. "

Chúng ta sẽ tìm hiểu sâu hơn về PDF được gắn thẻ và làm cho các tệp PDF "có thể truy cập được" trong chương 3

Chuyển đổi HTML thành các đối tượng iText

Các phương thức 

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
47/
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
48 tạo một tệp PDF hoàn chỉnh. Bất kỳ 
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
82,
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
83, 
boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forHtml("

Apples, not oranges

"
)) .convert("/path/to/file.pdf");
49, 
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
93(Java/. NET) hoặc 
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
98 (Java/. NET) được chuyển đến phương thức 
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
47/_______148 bị đóng sau khi đầu vào được phân tích cú pháp và chuyển đổi thành PDF. Điều này có thể không phải luôn luôn là những gì bạn muốn

Trong một số trường hợp, bạn muốn thêm một số thông tin bổ sung vào

boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forHtml("

Apples, not oranges

"
)) .convert("/path/to/file.pdf");
54(Java/. NET) hoặc có thể bạn không muốn chuyển đổi HTML thành tệp PDF mà thành một loạt đối tượng iText mà bạn có thể sử dụng cho mục đích khác. Đó là nội dung của các phương thức 
boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forHtml("

Apples, not oranges

"
)) .convert("/path/to/file.pdf");
55/
boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forHtml("

Apples, not oranges

"
)) .convert("/path/to/file.pdf");
56 và 
boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forHtml("

Apples, not oranges

"
)) .convert("/path/to/file.pdf");
57/
boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forHtml("

Apples, not oranges

"
)) .convert("/path/to/file.pdf");
58 

Trong C01E07_HelloWorld. java, chúng tôi chuyển HTML Hello World của mình thành

boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forHtml("

Apples, not oranges

"
)) .convert("/path/to/file.pdf");
54 (Java/. NET) vì chúng tôi muốn thêm một số nội dung bổ sung sau khi chúng tôi đã hoàn tất việc phân tích cú pháp HTML


public static String BASEURI = "src/main/resources/html/";
public static String SRC = String.Format("{0}hello.html", BASEURI);
2____73

Phương thức 

boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forHtml("

Apples, not oranges

"
)) .convert("/path/to/file.pdf");
55/
boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forHtml("

Apples, not oranges

"
)) .convert("/path/to/file.pdf");
56 trả về một iText 
boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forHtml("

Apples, not oranges

"
)) .convert("/path/to/file.pdf");
54 (Java/. NET) ví dụ. Chúng tôi sử dụng cái này 
boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forHtml("

Apples, not oranges

"
)) .convert("/path/to/file.pdf");
54 (Java/. NET) để thêm một số nội dung bổ sung (
boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forUrl("https://github.com/wooio/htmltopdf-java"))
    .convert("/path/to/file.pdf");
14) sau khi HTML đã được phân tích cú pháp

Html2pdf java

Hình 1. 6. sử dụng phương thức convertToDocument()

Phần trên của nội dung trong hình 1. 6 đã được thêm vào bằng cách phân tích cú pháp HTML thành PDF; . " ở cuối– được thêm vào bằng cách sử dụng hướng dẫn 

boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forUrl("https://github.com/wooio/htmltopdf-java"))
    .convert("/path/to/file.pdf");
15/
boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forUrl("https://github.com/wooio/htmltopdf-java"))
    .convert("/path/to/file.pdf");
16

Trong C01E08_HelloWorld. java, chúng tôi sử dụng phương thức 

boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forHtml("

Apples, not oranges

"
)) .convert("/path/to/file.pdf");
57/
boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forHtml("

Apples, not oranges

"
)) .convert("/path/to/file.pdf");
58 . Phương thức này tạo ra 
boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forUrl("https://github.com/wooio/htmltopdf-java"))
    .convert("/path/to/file.pdf");
19 trong số 
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
200 đối tượng. Giao diện 
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
200 được triển khai bởi tất cả các khối xây dựng iText

Để biết thêm thông tin về các nền tảng của iText, vui lòng đọc iText 7. Hướng dẫn khối xây dựng

Ví dụ cuối cùng của chương 1 này thêm mọi đối tượng cấp cao nhất của bộ sưu tập 

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
202/
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
203 vào một 
boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forHtml("

Apples, not oranges

"
)) .convert("/path/to/file.pdf");
54(Java/. NET), trước một 
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
205 hiển thị tên của đối tượng đó


public static String BASEURI = "src/main/resources/html/";
public static String SRC = String.Format("{0}hello.html", BASEURI);
4

public static String BASEURI = "src/main/resources/html/";
public static String SRC = String.Format("{0}hello.html", BASEURI);
5

Nhìn vào hình 1. 7, chúng ta thấy rằng danh sách bao gồm ba yếu tố. một 

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
206 và hai 
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
205 (Java/. NET) đối tượng

Html2pdf java

Hình 1. 7. thêm từng phần tử một

Tiêu đề được coi là ____1206, trong khi hình ảnh biểu trưng được bao bọc bên trong _____1205(Java/. MẠNG LƯỚI). Đừng lo lắng về điều này; . Kết quả cuối cùng mới quan trọng

Bản tóm tắt

Trong chương này, chúng tôi đã lấy một tệp HTML rất đơn giản và chúng tôi đã chuyển đổi tệp đó thành PDF bằng cách triển khai các phương pháp chuyển đổi khác nhau 

<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
47/
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
48, 
boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forHtml("

Apples, not oranges

"
)) .convert("/path/to/file.pdf");
55/
<dependency>
  <groupId>io.woogroupId>
  <artifactId>htmltopdfartifactId>
  <version>1.0.8version>
  <scope>compilescope>
dependency>
213  and 
boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forHtml("

Apples, not oranges

"
)) .convert("/path/to/file.pdf");
57/
boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forHtml("

Apples, not oranges

"
)) .convert("/path/to/file.pdf");
58 . When you consult the API documentation for the HtmlConverter class ( Java / . NET ), bạn sẽ khám phá thêm một số biến thể của các phương thức đó. Trong chương tiếp theo, chúng ta sẽ chọn một trong các phương pháp đó để chuyển đổi các tệp HTML khác nhau. Mỗi tệp HTML này sẽ sử dụng CSS theo một cách khác nhau.