產品比較

IronPDF for Java 和 Apache PDFBox 的比較

發佈 2023年1月14日
分享:

本文將涵蓋以下兩個在 Java 中處理 PDF 文件最受歡迎的庫:

  1. IronPDF

  2. Apache PDFBox

    現在我們應該使用哪個庫? 在本文中,我將比較這兩個庫的核心功能,以便您能夠決定哪一個最適合您的生產環境。

IronPDF

IronPDF庫支持HTML 轉 PDF適用於 Java 8+、Kotlin 和 Scala。 此創建者提供跨平台支持,即 Windows、Linux 或雲平台。 它是專為 Java 設計,優先考慮準確性、易用性和速度。

IronPDF 的開發旨在幫助軟體開發人員創建、編輯和提取 PDF 文件中的內容。 這是基於IronPDF for .NET的成功和受歡迎程度。

IronPDF 的突出特點包括:

使用 HTML 資產

  • HTML(5及以下),CSS(螢幕與列印)圖像(JPG、PNG、GIF、TIFF、SVG、BMP),JavaScript(+ 渲染延遲)
  • 字體(網頁與圖示)

HTML轉PDF

  • HTML 檔案/字串到 PDF 文件的建立和操作
  • URL轉PDF

轉換圖片

  • 將圖像轉換為新的 PDF 文件
  • PDF 轉換為圖像

自訂紙張設定

  • 自訂紙張尺寸、方向和旋轉
  • 邊距(毫米、英寸與零)
  • 彩色和灰階,解析度和JPEG品質

其他功能

  • 網站及系統登入
  • 自訂使用者代理和代理伺服器
  • HTTP 標頭

Apache PDFBox 庫

Apache PDFBox 是一個用於處理 PDF 文件的開源 Java 庫。 它允許用戶生成、编辑和操作現有文件。 它還可以從檔案中提取內容。 該庫提供了多種工具,用於對文件執行各種操作。

以下是 Apache PDFBox 的突出功能。

提取文本

  • 從文件中提取 Unicode 文本。

分割和合併

  • 將單個 PDF 拆分成多個文件
  • 合併多個文件。

填寫表單

  • 從表單提取數據
  • 填寫 PDF 表單。

預檢查

  • 驗證檔案是否符合 PDF/A-1b 標準。

列印

  • 使用標準列印 API 列印 PDF。

保存為圖片

  • 將 PDF 保存為 PNG、JPEG 或其他圖像類型。

建立 PDF 文件

  • 從頭開始開發一個具有嵌入字體和圖像的 PDF。

簽名

  • 數位簽署檔案。

概述

其餘的文章如下:

  1. IronPDF 安裝

  2. Apache PDFBox 安裝

  3. 創建 PDF 文件

  4. 圖片轉文件

  5. 文件加密

  6. 授權

  7. 結論

    現在,我們將下載並安裝這些程式庫以比較它們及其強大的功能。

1. IronPDF 安裝

安裝 IronPDF for Java 很簡單。 有不同的方法可以做到這一點。 本節將展示兩種最受歡迎的方法。

1.1. 下載 JAR 並添加庫

若要下載 IronPDF JAR 檔案,請造訪IronPDF 的 Maven 網站並下載最新版本的IronPDF。

  • 點擊下載選項並下載 JAR。

    IronPDF For Java 與 Apache PDF Box for Java 的比較 - 圖 1:下載 IronPDF JAR

    下載 IronPDF JAR

    一旦下載了 JAR,現在是時候將該庫安裝到我們的 Maven 專案中了。 您可以使用任何 IDE,但我們將使用 NetBeans。 在專案部分:

  • 右鍵單擊「Libraries」資料夾,然後選擇 Add JAR/Folder 選項。
    IronPDF For Java 與 Apache PDF Box for Java 的比較 - 圖 2:在 Netbeans 中添加 IronPDF 庫

    在 Netbeans 中添加 IronPDF 函式庫

  • 移動到您下載 JAR 的文件夾。
  • 選擇 IronPDF JAR,然後點擊打開按鈕。
    IronPDF For Java 與 Apache PDF Box for Java 的比較 - 圖3:打開 IronPDF JAR

    打開IronPDF JAR

1.2. 透過 Maven 作為依賴項安裝

下載和安裝IronPDF的另一種方式是使用Maven。 您可以直接在 pom.xml 中添加依賴項,或使用 NetBeans 的依賴工具將其包含到您的項目中。

在 pom.xml 中添加庫依賴項

將以下代碼複製並貼上至 pom.xml 中。

xml-mvn-install-ao 請提供內容以進行翻譯。

使用依賴功能添加庫

  • 右鍵單擊依賴項
  • 選擇新增相依性,並填寫以下詳細信息以更新版本。
    在 Java 平台上對比 IronPDF 和 Apache PDF Box - 圖 4:添加 IronPDF 依賴項

    添加 IronPDF 依賴性

    現在讓我們安裝 Apache PDFBox。

2. 安裝 Apache PDFBox

我們可以使用與 IronPDF 相同的方法來下載和安裝 PDFBox。

2.1. 下載 JAR 並手動添加庫

若要安裝 PDFBox JAR,請造訪官方網站並下載 PDFBox 庫最新版本。

在創建專案後,在專案部分:

  • 右鍵點擊 Libraries 資料夾,然後選擇 Add JAR/Folder 選項。
    IronPDF For Java 與 Apache PDF Box for Java 的比較 - 圖 5:添加庫

    新增庫

  • 移動到您下載 JAR 的文件夾。
  • 選擇 PDFBox JAR,然後按一下打開按鈕。
    IronPDF For Java 與 Apache PDF Box for Java 的比較 - 圖6:打開 PDFBox JAR

    開啟 PDFBox JAR

2.2. 通過 Maven 作為依賴項安裝

在 pom.xml 中添加依赖项

將以下代碼複製並貼上至 pom.xml 中。

<dependencies>
    <dependency>  
        <groupId>org.apache.pdfbox</groupId>
        <artifactId>pdfbox-app</artifactId>
        <version>3.0.0-alpha3</version>
    </dependency>
</dependencies>
XML

這將自動下載 PDFBox 依賴項並將其安裝在存儲庫資料夾中。 現在可以使用了。

使用相依關係功能新增相依性

  • 在專案區域中右鍵點擊依賴項
  • 選擇新增相依性,並填寫以下詳細信息以更新版本。
    IronPDF For Java 與 Apache PDF Box for Java 的比較 - 圖 7:添加 PDFBox 依賴項

    添加 PDFBox 依賴

建立 PDF 文件

3.1. 使用 IronPDF

IronPDF 提供不同的方法來創建文件。 讓我們來看看兩個最重要的方法。

現有的 URL 轉為 PDF

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"));
JAVA

輸出為以下格式良好的 URL,並保存如下:

IronPDF For Java 與 Apache PDF Box for Java 之間的比較 - 圖 8:IronPDF URL 輸出

IronPDF 網址輸出

HTML 輸入字符串轉 PDF

以下示範程式碼顯示了如何使用 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"));
JAVA

輸出如下:

IronPDF For Java 與 Apache PDF Box for Java 的比較 - 圖 9:IronPDF HTML 輸出

IronPDF HTML 輸出

3.2. 使用 Apache PDFBox

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();
JAVA
IronPDF For Java 和 Apache PDF Box For Java 的比較 - 圖10:PDFBox 定位輸出

PDFBox定位輸出

但是,如果我們移除 contentStream.newLineAtOffset(25, 700)從上述程式碼範例中移除;,然後運行專案,它會產生一個在頁面底部輸出的 PDF。 這對某些開發人員而言可能會非常煩人,因為他們必須使用(x,y)坐標。y = 0` 表示文字將出現在底部。

IronPDF For Java 與 Apache PDF Box for Java 的比較 - 圖 11: 沒有定位輸出的 PDFBox

PDFBox 不進行定位輸出

4. 圖片轉文檔

4.1. 使用 IronPDF

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");
JAVA
IronPDF For Java 與 Apache PDF Box For Java 的比較 - 圖12:IronPDF 圖片至輸出

IronPDF 圖片輸出

4.2. 使用 Apache PDFBox

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);
}
JAVA
IronPDF for Java 與 Apache PDF Box for Java 的比較 - 圖13:PDFBox 圖像輸出

PDFBox 圖像輸出

5. 加密文件

5.1. 使用IronPDF

以下是使用 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"));
JAVA

5.2. 使用 Apache PDFBox

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();
JAVA

6. 價格和授權

IronPDF 價格和授權

IronPDF 可免費用於開發簡單的 PDF 應用程式,且隨時可獲得商業使用授權。IronPDF 提供單個專案授權、單個開發者授權、機構及跨國組織的授權,以及 SaaS 和 OEM 重新分發授權和支援。 所有許可證均配備 免費試用,30 天退款保證,以及一年軟體支援和升級。

Lite 套裝可用於 $749。 IronPDF 產品絕對沒有任何經常性費用。 有關軟體授權的詳細資訊,可在產品上找到IronPDF 授權頁面.

IronPDF For Java 與 Apache PDF Box for Java 的比較 - 圖 14:IronPDF Licensing

IronPDF 授權

Apache PDFBox 定價和授權政策

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 網頁了解這個驚人的優惠的更多信息。

< 上一頁
IronPDF for Java 與 Spire.PDF Java 的比較
下一個 >
IronPDF for Java 和 iTextPDF itext7 for Java 的比較

準備開始了嗎? 版本: 2024.9 剛剛發布

免費 Maven 下載 查看許可證 >