产品比较

IronPDF for Java 与 Apache PDFBox 的比较

发布 2023年一月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 文件,请访问 Maven 网站 并下载最新版本的 IronPDF。

  • 单击 "下载 "选项并下载 JAR。
A Comparison between IronPDF For Java and Apache PDF Box for Java - Figure 1: 下载 IronPDF JAR

下载 IronPDF JAR

下载 JAR 后,现在就需要将库安装到我们的 Maven 项目中。您可以使用任何集成开发环境,但我们将使用 Netbeans。在 "项目 "部分

  • 右键单击库文件夹,选择 添加 JAR/Folder 选项。
A Comparison between IronPDF For Java and Apache PDF Box for Java - Figure 2: 在 Netbeans 中添加 IronPDF 库

在 Netbeans 中添加 IronPDF 库

  • 移动到下载 JAR 的文件夹。
  • 选择 IronPDF JAR 并单击 "打开 "按钮。
A Comparison between IronPDF For Java and Apache PDF Box for Java - Figure 3: 打开 IronPDF JAR打开 IronPDF JAR

打开 IronPDF JAR

1.2.通过 Maven 作为依赖安装

另一种下载和安装 IronPDF 的方法是使用 Maven。您只需在 pom.xml 中添加依赖关系,或使用 Netbeans 的依赖关系工具将其包含在您的项目中。

在 pom.xml 中添加库依赖关系

复制以下代码并粘贴到 pom.xml 中。

``xml-mvn-install-ao


#### 使用依赖关系功能添加库
- 右键单击依赖项
- 选择 "添加依赖项",并填写以下更新版本的详细信息

<div class="content-img-align-center">
    <div class="center-image-wrapper">
        <a rel="nofollow" href="/static-assets/ironpdf-java/blog/apache-pdfbox-html-to-pdf-java/apache-pdfbox-html-to-pdf-java-4.webp" target="_blank"><img src="/static-assets/ironpdf-java/blog/apache-pdfbox-html-to-pdf-java/apache-pdfbox-html-to-pdf-java-4.webp" alt="A Comparison between IronPDF For Java and Apache PDF Box for Java - Figure 4: 添加 IronPDF 依赖项" class="img-responsive add-shadow"></a>
        <p class="content__image-caption">添加 IronPDF 依赖项</p>
    </div>
</div>
现在,让我们安装 Apache PDFBox。

## 2.安装 Apache PDFBox

我们可以使用与 IronPDF 相同的方法下载并安装 PDFBox。

### 2.1.下载 JAR 并手动添加库

要安装 PDFBox JAR,请访问官方网站并 [下载](https://pdfbox.apache.org/) 最新版本。

创建项目后,在项目部分:

- 右键单击库文件夹,选择 ** 添加 JAR/Folder** 选项。

<div class="content-img-align-center">
    <div class="center-image-wrapper">
        <a rel="nofollow" href="/static-assets/ironpdf-java/blog/apache-pdfbox-html-to-pdf-java/apache-pdfbox-html-to-pdf-java-5.webp" target="_blank"><img src="/static-assets/ironpdf-java/blog/apache-pdfbox-html-to-pdf-java/apache-pdfbox-html-to-pdf-java-5.webp" alt="A Comparison between IronPDF For Java and Apache PDF Box for Java - Figure 5: 添加图书馆" class="img-responsive add-shadow"></a>
        <p class="content__image-caption">添加图书馆</p>
    </div>
</div>
- 移动到下载 JAR 的文件夹。
- 选择 PDFBox JAR 并单击 "打开 "按钮。

<div class="content-img-align-center">
    <div class="center-image-wrapper">
        <a rel="nofollow" href="/static-assets/ironpdf-java/blog/apache-pdfbox-html-to-pdf-java/apache-pdfbox-html-to-pdf-java-6.webp" target="_blank"><img src="/static-assets/ironpdf-java/blog/apache-pdfbox-html-to-pdf-java/apache-pdfbox-html-to-pdf-java-6.webp" alt="A Comparison between IronPDF For Java and Apache PDF Box for Java - Figure 6: 打开 PDFBox JAR" class="img-responsive add-shadow"></a>
        <p class="content__image-caption">打开 PDFBox JAR</p>
    </div>
</div>
### 2.2.通过 Maven 作为依赖项进行安装

#### 在 pom.xml 中添加依赖项

复制以下代码并粘贴到 pom.xml 中。

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

这将自动下载 PDFBox 依赖项并安装到存储库文件夹中。现在就可以使用了。

使用依赖项功能添加依赖项

  • 右键单击项目部分中的依赖项
  • 选择 "添加依赖项 "并填写以下更新版本的详细信息
A Comparison between IronPDF For Java and Apache PDF Box for Java - Figure 7: 添加 PDFBox 依赖项

添加 PDFBox 依赖项

3.创建 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:添加 PDFBox 依赖关系

IronPDF URL 输出

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

输出结果如下

A Comparison between IronPDF For Java and Apache PDF Box for Java - Figure 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 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
A Comparison between IronPDF For Java and Apache PDF Box for Java - Figure 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:PDFBox 定位输出

输出 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 输出图像

输出 IronPDF 图像

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 天退款保证,以及一年的软件支持和升级。

精简版软件包的价格为"$liteLicense"。IronPDF 产品绝对没有经常性费用。有关软件许可的更多详细信息,请参阅产品介绍。 授权 page.

A Comparison between IronPDF For Java and Apache PDF Box for Java - Figure 14: IronPDF 许可

IronPDF 许可

Apache PDFBox 定价和许可

Apache PDFBox 免费提供,不收取任何费用。无论如何使用,无论是用于个人、内部还是商业目的,它都是免费的。

您可以将阿帕奇许可证 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,测试其功能。 试一试立即购买.

您现在可以超低价购买 Iron Suite 中的所有 Iron 软件产品。请访问 网页 了解更多关于这项惊人交易的信息。

< 前一页
IronPDF for Java与Spire.PDF Java的比较
下一步 >
IronPDF For Java与iTextPDF itext7 for Java的比较

准备开始了吗? 版本: 2024.9 刚刚发布

免费 Maven 下载 查看许可证 >