在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
本文將涵蓋以下兩個在 Java 中處理 PDF 文件最受歡迎的庫:
IronPDF
Apache PDFBox
現在我們應該使用哪個庫? 在本文中,我將比較這兩個庫的核心功能,以便您能夠決定哪一個最適合您的生產環境。
這IronPDF庫支持HTML 轉 PDF適用於 Java 8+、Kotlin 和 Scala。 此創建者提供跨平台支持,即 Windows、Linux 或雲平台。 它是專為 Java 設計,優先考慮準確性、易用性和速度。
IronPDF 的開發旨在幫助軟體開發人員創建、編輯和提取 PDF 文件中的內容。 這是基於IronPDF for .NET的成功和受歡迎程度。
IronPDF 的突出特點包括:
Apache PDFBox 是一個用於處理 PDF 文件的開源 Java 庫。 它允許用戶生成、编辑和操作現有文件。 它還可以從檔案中提取內容。 該庫提供了多種工具,用於對文件執行各種操作。
以下是 Apache PDFBox 的突出功能。
其餘的文章如下:
IronPDF 安裝
Apache PDFBox 安裝
創建 PDF 文件
圖片轉文件
文件加密
授權
結論
現在,我們將下載並安裝這些程式庫以比較它們及其強大的功能。
安裝 IronPDF for Java 很簡單。 有不同的方法可以做到這一點。 本節將展示兩種最受歡迎的方法。
若要下載 IronPDF JAR 檔案,請造訪IronPDF 的 Maven 網站並下載最新版本的IronPDF。
點擊下載選項並下載 JAR。
一旦下載了 JAR,現在是時候將該庫安裝到我們的 Maven 專案中了。 您可以使用任何 IDE,但我們將使用 NetBeans。 在專案部分:
下載和安裝IronPDF的另一種方式是使用Maven。 您可以直接在 pom.xml 中添加依賴項,或使用 NetBeans 的依賴工具將其包含到您的項目中。
將以下代碼複製並貼上至 pom.xml 中。
xml-mvn-install-ao
請提供內容以進行翻譯。
現在讓我們安裝 Apache PDFBox。
我們可以使用與 IronPDF 相同的方法來下載和安裝 PDFBox。
若要安裝 PDFBox JAR,請造訪官方網站並下載 PDFBox 庫最新版本。
在創建專案後,在專案部分:
將以下代碼複製並貼上至 pom.xml 中。
<dependencies>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox-app</artifactId>
<version>3.0.0-alpha3</version>
</dependency>
</dependencies>
這將自動下載 PDFBox 依賴項並將其安裝在存儲庫資料夾中。 現在可以使用了。
IronPDF 提供不同的方法來創建文件。 讓我們來看看兩個最重要的方法。
IronPDF 使 從 HTML 生成文件. 以下範例程式碼將網頁的 URL 轉換為 PDF。
License.setLicenseKey("YOUR-LICENSE-KEY");
Settings.setLogPath(Paths.get("C:/tmp/IronPdfEngine.log"));
PdfDocument myPdf = PdfDocument.renderUrlAsPdf("https://ironpdf.com");
myPdf.saveAs(Paths.get("url.pdf"));
輸出為以下格式良好的 URL,並保存如下:
以下示範程式碼顯示了如何使用 HTML 字串在 Java 中渲染 PDF。 您只需要使用 HTML 字串或文件即可將其轉換為新文檔。
License.setLicenseKey("YOUR-LICENSE-KEY");
Settings.setLogPath(Paths.get("C:/tmp/IronPdfEngine.log"));
PdfDocument myPdf = PdfDocument.renderHtmlAsPdf("<h1> ~Hello World~ </h1> Made with IronPDF!");
myPdf.saveAs(Paths.get("html_saved.pdf"));
輸出如下:
PDFBox 也可以從不同格式生成新的 PDF 文件,但無法直接從 URL 或 HTML 字串轉換。
以下代碼範例用一些文字創建了一個文檔:
//Create document object
PDDocument document = new PDDocument();
PDPage blankPage = new PDPage();
document.addPage(blankPage);
//Retrieving the pages of the document
PDPage paper = document.getPage(0);
PDPageContentStream contentStream = new PDPageContentStream(document, paper);
//Begin the Content stream
contentStream.beginText();
//Setting the font to the Content stream
contentStream.setFont(PDType1Font.TIMES_ROMAN, 12);
//Setting the position for the line
contentStream.newLineAtOffset(25, 700);
String text = "This is the sample document and we are adding content to it.";
//Adding text in the form of a string
contentStream.showText(text);
//Ending the content stream
contentStream.endText();
System.out.println("Content added");
//Closing the content stream
contentStream.close();
//Saving the document
document.save("C:/PdfBox_Examples/my_doc.pdf");
System.out.println("PDF created");
//Closing the document
document.close();
但是,如果我們移除 contentStream.newLineAtOffset(25, 700)從上述程式碼範例中移除
;,然後運行專案,它會產生一個在頁面底部輸出的 PDF。 這對某些開發人員而言可能會非常煩人,因為他們必須使用(x,y)坐標。
y = 0` 表示文字將出現在底部。
IronPDF 可以輕鬆地將多個圖片轉換為單一的 PDF。 將多個圖像添加到單個文檔的程式碼如下:
import com.ironsoftware.ironpdf.*;
import java.io.IOException;
import java.nio.file.*;
import java.util.ArrayList;
import java.util.List;
// Reference to the directory containing the images that we desire to convert
List<Path> images = new ArrayList<>();
images.add(Paths.get("imageA.png"));
images.add(Paths.get("imageB.png"));
images.add(Paths.get("imageC.png"));
images.add(Paths.get("imageD.png"));
images.add(Paths.get("imageE.png"));
// Render all targeted images as PDF content and save them together in one document.
PdfDocument merged = PdfDocument.fromImage(images);
merged.saveAs("output.pdf");
import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
// Reference to the directory containing the images that we desire to convert
Path imageDirectory = Paths.get("assets/images");
// Create an empty list to contain Paths to images from the directory.
List<Path> imageFiles = new ArrayList<>();
PDDocument doc = new PDDocument();
// Use a DirectoryStream to populate the list with paths for each image in the directory that we want to convert
try (DirectoryStream<Path> stream = Files.newDirectoryStream(imageDirectory, "*.{png,jpg}")) {
for (Path entry : stream) {
imageFiles.add(entry);
}
for (int i = 0; i < imageFiles.size(); i++){
//Add a Page
PDPage blankPage = new PDPage();
doc.addPage(blankPage);
PDPage page = doc.getPage(i);
//Creating PDImageXObject object
PDImageXObject pdImage = PDImageXObject.createFromFile(imageFiles.get(i).toString(),doc);
//creating the PDPageContentStream object
PDPageContentStream contents = new PDPageContentStream(doc, page);
//Drawing the image in the document
contents.drawImage(pdImage, 0, 0);
System.out.println("Image inserted");
//Closing the PDPageContentStream object
contents.close();
}
//Saving the document
doc.save("C:/PdfBox_Examples/sample.pdf");
//Closing the document
doc.close();
} catch (IOException exception) {
throw new RuntimeException(String.format("Error converting images to PDF from directory: %s: %s",
imageDirectory,
exception.getMessage()),
exception);
}
以下是使用 IronPDF 為 PDF 加密密碼的代碼:
// Open a document(or create a new one from HTML)
PdfDocument pdf = PdfDocument.fromFile(Paths.get("assets/composite.pdf"));
// Edit security settings
SecurityOptions securityOptions = new SecurityOptions();
securityOptions.setOwnerPassword("top-secret");
securityOptions.setUserPassword("sharable");
// Change or set the document encryption password
SecurityManager securityManager = pdf.getSecurity();
securityManager.setSecurityOptions(securityOptions);
pdf.saveAs(Paths.get("assets/secured.pdf"));
Apache PDFBox 也提供文件加密以提高文件的安全性。 您也可以添加其他信息,例如元數據。 代碼如下:
//Loading an existing document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument document = PDDocument.load(file);
//Creating access permission object
AccessPermission ap = new AccessPermission();
//Creating StandardProtectionPolicy object
StandardProtectionPolicy spp = new StandardProtectionPolicy("1234", "1234", ap);
//Setting the length of the encryption key
spp.setEncryptionKeyLength(128);
//Setting the access permissions
spp.setPermissions(ap);
//Protecting the document
document.protect(spp);
System.out.println("Document encrypted");
//Saving the document
document.save("C:/PdfBox_Examples/encrypted.pdf");
//Closing the document
document.close();
IronPDF 可免費用於開發簡單的 PDF 應用程式,且隨時可獲得商業使用授權。IronPDF 提供單個專案授權、單個開發者授權、機構及跨國組織的授權,以及 SaaS 和 OEM 重新分發授權和支援。 所有許可證均配備 免費試用,30 天退款保證,以及一年軟體支援和升級。
Lite 套裝可用於 $749。 IronPDF 產品絕對沒有任何經常性費用。 有關軟體授權的詳細資訊,可在產品上找到IronPDF 授權頁面.
Apache PDFBox 是免費提供的,無需任何費用。 無論如何使用,不論是個人、內部還是商業用途,這都是免費的。
您可以包含 Apache 许可证 2.0(目前版本)來自Apache 授權條款 2.0 文本. 要包含許可證副本,只需將其包含在您的工作中即可。 您也可以在源代码的顶部附上以下通知作为注释。
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
相比之下,IronPDF 在功能性和產品支援方面都優於 Apache PDFBox。 它還提供 SaaS 和 OEM 支援,這是現代軟體開發的一項要求。 然而,這個函式庫不像 Apache PDFBox 那樣可以免費用於商業用途。
擁有大型軟體應用程式的公司可能需要持續的錯誤修正和來自第三方供應商的支持,以解決在軟體開發過程中出現的問題。 這是許多開源解決方案中所缺乏的,例如 Apache PDFBox,它依賴於其開發者社區的自願支持來維持。 簡而言之,IronPDF 最適合用於商業和市場用途,而 Apache PDFBox 更適合個人和非商業應用。
IronPDF 還有免費試用版來測試其功能。 試試看或購買IronPDF.
您現在可以以大幅折扣的價格購買 Iron Suite 中的所有 Iron Software 產品。訪問此網站Iron Suite 網頁了解這個驚人的優惠的更多信息。