Java是大規(guī)模和企業(yè)級應(yīng)用程序最常用的編程語言之一。PDF 格式代表可移植文檔格式,為人們提供了一種簡單、可靠的方式來呈現(xiàn)和交換文檔 - 無論查看文檔的任何人使用何種軟件、硬件或操作系統(tǒng)。因此,pdf 是一種廣泛使用的格式,用于在軟件應(yīng)用程序中生成文檔。
HTML 用于表示 Web 瀏覽器中的信息。因此,應(yīng)用程序的每個信息、報告、發(fā)票或網(wǎng)頁都是 HTML 格式的。因此,我們需要學(xué)習(xí)從HTML生成pdf文件。在本教程中,我們將學(xué)習(xí)將 HTML 文件轉(zhuǎn)換為 pdf 文件。
我們需要一個第三方庫來將 HTML 文件轉(zhuǎn)換為 pdf 文件。有多個庫可用,其優(yōu)點(diǎn)和缺點(diǎn)。其中一些是付費(fèi)的,有些沒有提供足夠的功能,其中一些不能以 100% 的準(zhǔn)確性轉(zhuǎn)換 HTML 文件,其中一些存在性能問題。
我發(fā)現(xiàn)[IronPDF](https://ironpdf.com/java/)?java庫非常適合此目的,因?yàn)樗梢悦赓M(fèi)開發(fā),更安全,在單個庫中提供100%精度的所有功能,并且具有出色的性能。
在繼續(xù)之前,讓我們簡要介紹一下 IronPDF。
## ?IronPDF:
IronPDF是由[IronSoftware](https://ironpdf.com/java/)開發(fā)的最流行的Java PDF庫,用于創(chuàng)建和編輯PDF。其簡單的API使開發(fā)人員能夠在各種Java項(xiàng)目中從HTML創(chuàng)建專業(yè),高質(zhì)量的PDF,包括Scala和Kotlin。IronPDF通過gRPC與IronPdfEngine通信。
主要功能包括使用HTML,HTTP,JavaScript,CSS和各種圖像格式創(chuàng)建PDF文檔。我們還可以添加頁眉和頁腳、簽名、附件、密碼和安全性。它提供了完整的多線程支持,而且數(shù)量更多!
現(xiàn)在我們將開始代碼示例。
首先,我們需要創(chuàng)建一個新的 maven 項(xiàng)目
?
命名項(xiàng)目,選擇位置,選擇語言,生成系統(tǒng)和JDK。點(diǎn)擊創(chuàng)建按鈕。將創(chuàng)建一個新項(xiàng)目。
現(xiàn)在,我們將在我們的Java應(yīng)用程序中安裝IronPDF。
## [](https://dev.to/mhamzap10/java-generate-pdf-from-html-without-losing-formatting-2dam#install-ironpdf-java-library)安裝 IronPDF Java 庫
我們需要將 IronPDF 定義為 pom.xml 文件中的依賴項(xiàng),以便在我們的應(yīng)用程序中安裝此庫。打開 pom.xml 文件并在該文件中添加以下 XML。
```
?<dependency>
? ? ? ? <groupId>com.ironsoftware</groupId>
? ? ? ? <artifactId>ironpdf</artifactId>
? ? ? ? <version>2023.1.1</version>
? ? </dependency>
<dependency>
? ? <groupId>org.slf4j</groupId>
? ? <artifactId>slf4j-simple</artifactId>
? ? <version>2.0.3</version>
</dependency>
```
現(xiàn)在,生成項(xiàng)目。該庫將從?[maven 存儲庫](https://central.sonatype.com/artifact/com.ironsoftware/ironpdf/2023.1.1)自動安裝到我們的應(yīng)用程序中。
用 HTML 創(chuàng)建 pdf 文件的示例開始。
## [](https://dev.to/mhamzap10/java-generate-pdf-from-html-without-losing-formatting-2dam#create-pdf-file-from-html-string)從 HTML 字符串創(chuàng)建 PDF 文件:
請參考以下示例:
```
?String htmlString = "<h1>My First PDF File<h1/><p> This is sample pdf file</p>";
? ? ? ? PdfDocument myPdf = PdfDocument.renderHtmlAsPdf(htmlString);
// Save the PdfDocument to a file
? ? ? ? try {
? ? ? ? ? ? myPdf.saveAs(Paths.get("myPDF.pdf") );
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? throw new RuntimeException(e);
? ? ? ? }
```
我們已將 HTML 內(nèi)容分配給一個字符串變量。由 IronPDF 庫的 PdfDocument 類提供的 renderHtmlAsPdf() 函數(shù)將字符串作為參數(shù),并將 html 內(nèi)容轉(zhuǎn)換為 pdf 文檔實(shí)例。saveAs() 函數(shù)將位置路徑作為參數(shù),并將該 pdf 文檔實(shí)例保存到我們提供的目錄中。
try-and-catch 語句用于處理任何運(yùn)行時異常。這只是在處理文件或數(shù)據(jù)庫時使用的最佳做法。
## [](https://dev.to/mhamzap10/java-generate-pdf-from-html-without-losing-formatting-2dam#output)輸出:
以下是上述代碼生成的 pdf。

我們已將 HTML 內(nèi)容分配給一個字符串變量。由 IronPDF 庫的 PdfDocument 類提供的 renderHtmlAsPdf() 函數(shù)將字符串作為參數(shù),并將 html 內(nèi)容轉(zhuǎn)換為 pdf 文檔實(shí)例。saveAs() 函數(shù)將位置路徑作為參數(shù),并將該 pdf 文檔實(shí)例保存到我們提供的目錄中。
try-and-catch 語句用于處理任何運(yùn)行時異常。這只是在處理文件或數(shù)據(jù)庫時使用的最佳做法。
## [](https://dev.to/mhamzap10/java-generate-pdf-from-html-without-losing-formatting-2dam#output)輸出:
以下是上述代碼生成的 pdf。
?
以下是示例代碼片段:
```
PdfDocument myPdf = PdfDocument.renderHtmlFileAsPdf("myFile.html");
// Save the PdfDocument to a file
? ? ? ? try {
? ? ? ? ? ? myPdf.saveAs("myPDF.pdf");
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? throw new RuntimeException(e);
? ? ? ? }
? ? }
```
renderHtmlFileAsPdf() 將 HTML 文件路徑作為參數(shù),并將給定的 HTML 文件轉(zhuǎn)換為 pdf 文檔。稍后,此pdf文檔將使用saveAs()函數(shù)保存到本地驅(qū)動器中。
## [](https://dev.to/mhamzap10/java-generate-pdf-from-html-without-losing-formatting-2dam#output)輸出:
以下是我們的程序生成的pdf文檔。
?
現(xiàn)在,我們將使用一個包含CSS和Javascript的大型HTML文檔。我們將觀察它在將 html 轉(zhuǎn)換為 pdf 時保持的準(zhǔn)確性和設(shè)計。
## [](https://dev.to/mhamzap10/java-generate-pdf-from-html-without-losing-formatting-2dam#convert-html-files-into-a-pdf-document)將 HTML 文件轉(zhuǎn)換為 PDF 文檔:
我將使用以下示例 HTML 頁面,其中包含圖像、動畫、樣式、jQuery 和引導(dǎo)程序。
'
?
?
我們可以看到示例 HTML 文檔具有圖像和復(fù)雜的樣式。我們將此HTML文件轉(zhuǎn)換為PDF文檔,并觀察樣式和內(nèi)容的準(zhǔn)確性。
我們將使用與上面示例中使用的相同代碼行。
```
PdfDocument myPdf = PdfDocument.renderHtmlFileAsPdf("index.html");
// Save the PdfDocument to a file
? ? ? ? try {
? ? ? ? ? ? myPdf.saveAs("myPDF.pdf");
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? throw new RuntimeException(e);
? ? ? ? }
? ? }
```
上一示例中已提供代碼說明。我們只是改變了路徑,其余的都是一樣的。
## [](https://dev.to/mhamzap10/java-generate-pdf-from-html-without-losing-formatting-2dam#output)輸出:
以下是生成的 pdf:
我們可以看到,使用IronPDF生成pdf非常容易。pdf 內(nèi)容和樣式與源文檔相同。
?
?
我們還可以使用 URL 生成 pdf 文件。
## [](https://dev.to/mhamzap10/java-generate-pdf-from-html-without-losing-formatting-2dam#convert-url-to-pdf-document)將網(wǎng)址轉(zhuǎn)換為 PDF 文檔:
以下代碼示例將從 URL 生成 pdf 文件。
```
?PdfDocument myPdf = PdfDocument.renderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
// Save the PdfDocument to a file
? ? ? ? try {
? ? ? ? ? ? myPdf.saveAs("myPDF.pdf");
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? throw new RuntimeException(e);
? ? ? ? }
? ? }
```
renderUrlAsPdf() 將 URL 作為參數(shù),并將該 URL 轉(zhuǎn)換為 pdf 文檔。稍后,此pdf文檔將使用saveAs()函數(shù)保存到本地驅(qū)動器中。
## [](https://dev.to/mhamzap10/java-generate-pdf-from-html-without-losing-formatting-2dam#output)輸出:
以下是生成的 pdf:
k3u1fbpfcp/6cef5cb195894f19bc30d6b8585a5bb9~tplv-k3u1fbpfcp-watermark.image?)
我們還可以添加水印、頁眉、頁腳、數(shù)字簽名等等。
?
讓我們將自定義水印、頁眉和頁腳添加到生成的 pdf 中。
## [](https://dev.to/mhamzap10/java-generate-pdf-from-html-without-losing-formatting-2dam#add-watermark)添加水印:
以下代碼會將水印添加到我們的 pdf 文件中。 ?
`myPdf.applyWatermark("My Custom Watermark");`
## [](https://dev.to/mhamzap10/java-generate-pdf-from-html-without-losing-formatting-2dam#add-header-and-footer)添加頁眉和頁腳:
`myPdf.addHtmlHeader(new HtmlHeaderFooter("my Header"));`
## [](https://dev.to/mhamzap10/java-generate-pdf-from-html-without-losing-formatting-2dam#add-footer)添加頁腳:
`myPdf.addHtmlFooter(new HtmlHeaderFooter("my Header"));`文章來源:http://www.zghlxwxcb.cn/news/detail-516965.html
同樣,我們可以添加前景、復(fù)制 pdf、合并 pdf 等等。文章來源地址http://www.zghlxwxcb.cn/news/detail-516965.html
到了這里,關(guān)于Java HTML生成PDF(格式不變)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!