如何在Java中压缩PDF文件 | IronPDF

如何在 Java 中压缩 PDF 文件

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF 使 Java 开发人员能够通过降低图像质量和缩放分辨率来压缩 PDF 文件,从而帮助减小文件大小,方便共享和存储。

快速开始:在Java中压缩PDF文件

```java {title="在 Java 中压缩 PDF"} //:path=/static-assets/pdf/content-code-examples/java/how-to/compress-pdf-java-tutorial/quickstart-compress.java import com.ironsoftware.IronPDF.*; 导入 java.nio.file.Paths;

// 加载您的 PDF 文档 PdfDocument pdf = PdfDocument.fromFile(Paths.get("source.pdf"));

// 将图像压缩至 60% 的质量 pdf.compressImages(60);

// 保存压缩 PDF pdf.saveAs(Paths.get("compressed.pdf"));


<div class="hsg-featured-snippet">
<h3>最小工作流程(5 个步骤)</h3>

1. 将 IronPDF 作为依赖项添加到您的 Maven `pom.xml` 中
2. 使用 `PdfDocument.fromFile()` 加载您的 PDF
3. 使用 `pdf.compressImages(60)` 压缩图片
4. 可选:使用 `pdf.compressImages(90, true)` 调整图像分辨率
5. 使用 `pdf.saveAs()` 保存压缩后的 PDF
</div>

PDF文档广泛用于共享和存储信息,但图像较多的文件很快就会达到数十兆字节。 大文件大小会使电子邮件传递复杂化,上传速度变慢,并增加存储成本。 IronPDF的Java压缩API通过让您在代码中用几行代码降低嵌入图像的质量和缩放分辨率来解决此问题。

本文将介绍如何在Java中使用IronPDF压缩PDF文件。 示例展示了简单的基于质量的压缩和分辨率缩放,因此您可以根据具体的尺寸和质量要求选择适合的方法。 如果您还在处理[图像较多的PDF](https://ironpdf.com/java/how-to/java-pdf-to-image-tutorial/)或需要处理[合并的文档](https://ironpdf.com/java/how-to/java-merge-pdf-tutorial/),压缩是分发前的一个重要步骤。

## 什么是IronPDF Java PDF库?

IronPDF是一个[Java PDF库](/java/),可通过编程方式创建、读取和操作PDF文档。 该库处理[HTML到PDF的转换](https://ironpdf.com/java/tutorials/html-to-pdf/)、表单填写、图像嵌入和文件压缩,而无需PDF查看器或外部渲染引擎。它支持多种部署环境,包括[AWS Lambda](https://ironpdf.com/java/get-started/aws/)、[Azure Functions](https://ironpdf.com/java/get-started/azure/) 和 [Google Cloud](https://ironpdf.com/java/get-started/google-cloud/)。

IronPDF中的压缩通过重新采样嵌入的图像到较低的JPEG质量水平来实现,并且可选地将其分辨率降低到PDF中的显示大小。 文本、矢量图形和文档结构不受影响。 这使得IronPDF成为需要快速通过电子邮件传输或存储在云系统中的大量文件的实用选择。

该库还可以很好地与其他文档操作一起工作:您可以压缩已经有[水印](https://ironpdf.com/java/how-to/custom-watermark/)、[背景层](https://ironpdf.com/java/how-to/background-foreground/)和[书签](https://ironpdf.com/java/how-to/bookmarks/)的PDF,且所有这些功能在压缩后都能保留。

请注意压缩对包含嵌入JPEG或PNG图像的PDF最为有效。 主要由文本和矢量图形组成的文档将看到最小的尺寸减少。)}]
## 如何在Java Maven项目中设置IronPDF? 在压缩PDF之前,将IronPDF添加到您的项目的Maven配置中。 有关完整设置说明,请参阅[快速入门指南](https://ironpdf.com/java/docs/)。 - 要在 [Maven 项目](/java/docs/)中安装 IronPDF,请将 `IronPDF` Maven 仓库和依赖项添加到您的 `pom.xml` 文件中。 - 将该依赖项添加到 `<dependencies>` 部分: ```xml //:path=/static-assets/pdf/content-code-examples/java/how-to/compress-pdf-java-tutorial/maven-dependency.xml <dependency> <groupId>com.ironsoftware</groupId> <artifactId>ironpdf</artifactId> <version>your_version_here</version> </dependency>
  • 保存您的 pom.xml,并运行 mvn install 以下载 IronPDF 依赖项。

一旦依赖项解析完成,您即可在项目中导入并使用 IronPDF 类。 IronPDF Java 构建包的最新发布版本已在 Maven Central 上提供。 为了生产部署,在运行前配置您的许可证密钥

如何在Java中压缩PDF文件?

IronPDF 通过针对文档内嵌的图像对 PDF 文件进行压缩。 compressImages() 方法接受 0 到 100 之间的质量整数,数值越低生成的文件越小,但会牺牲图像的清晰度。 可选的第二个参数指示库根据PDF页面中的显示大小缩小图像分辨率。

//:path=/static-assets/pdf/content-code-examples/java/how-to/compress-pdf-java-tutorial/compress-pdf-images.java
import com.ironsoftware.IronPDF.*;
import java.io.IOException;
导入 java.nio.file.Paths;

public class App {
    public static void main(String[] args) throws IOException {
        // Load the source PDF from disk
        String src = "C:\\Image based PDF.pdf";
        PdfDocument pdf = PdfDocument.fromFile(Paths.get(src));

        // First pass: compress images to 60% quality
        // Lower values produce smaller files with more visible quality loss
        pdf.compressImages(60);
        pdf.saveAs(Paths.get("assets/document_compressed.pdf"));

        // Second pass (optional): compress to 90% quality with resolution scaling
        // The second parameter scales image resolution down to match display size,
        // which can reduce file size further but may cause distortion in some PDFs
        pdf.compressImages(90, true);
        pdf.saveAs(Paths.get("C:\\Compressed.pdf"));
    }
}
//:path=/static-assets/pdf/content-code-examples/java/how-to/compress-pdf-java-tutorial/compress-pdf-images.java
import com.ironsoftware.IronPDF.*;
import java.io.IOException;
导入 java.nio.file.Paths;

public class App {
    public static void main(String[] args) throws IOException {
        // Load the source PDF from disk
        String src = "C:\\Image based PDF.pdf";
        PdfDocument pdf = PdfDocument.fromFile(Paths.get(src));

        // First pass: compress images to 60% quality
        // Lower values produce smaller files with more visible quality loss
        pdf.compressImages(60);
        pdf.saveAs(Paths.get("assets/document_compressed.pdf"));

        // Second pass (optional): compress to 90% quality with resolution scaling
        // The second parameter scales image resolution down to match display size,
        // which can reduce file size further but may cause distortion in some PDFs
        pdf.compressImages(90, true);
        pdf.saveAs(Paths.get("C:\\Compressed.pdf"));
    }
}
JAVA

代码从磁盘加载PDF,并通过两个过程应用压缩以说明不同的策略。 第一个 compressImages(60) 调用将图像质量降低至 60% 并节省结果。 第二次调用使用90%质量但启用了分辨率缩放,这会调整每个图像的像素尺寸,使其与页面上的可见区域相匹配。

compressImages() 方法有两种签名:

  • compressImages(int quality) — 将所有嵌入的图像重新采样为指定的 JPEG 质量级别。 使用40到80之间的值以强力减少大小,同时保持图像可识别性。
  • compressImages(int quality, boolean scaleImageResolutionToVisibleSize) — 添加分辨率缩放功能。 当 true 时,该库会检测到以原生分辨率的一小部分渲染的图像,并相应地将其缩小。 此选项提供最激进的尺寸减小,但稍微增加处理时间。

提示应用多次迭代以微调大小和质量的平衡。 从70%的中等设置开始,检查输出文件大小,然后决定是否需要第二次以较低质量的迭代。

在图像较多的PDF上运行60%的压缩过程通常会根据源图像减少文件大小50-70%。 主要为文本内容的文档将看到更小的增益。 在输出目录中比较压缩前后的文件大小,以评估您具体文档的结果。

对于除压缩外还需进行其他处理的文档,IronPDF 支持文本提取图片提取以及 PDF 分割功能

原始 PDF 看起来像什么?

文件资源管理器显示使用 IronPDF 压缩前 458 KB 的原始 PDF 文件

压缩后的结果如何?

文件资源管理器中显示的压缩后 PDF 输出文件,经 IronPDF compressImages 以 60% 质量压缩后,文件大小明显减小

如何选择正确的压缩质量设置?

选择正确的质量级别需要在文件大小和视觉保真度之间取得平衡。 正确的设置取决于文档的用途及其嵌入图像的敏感性。

下表提供了常见用例的实际指导:

IronPDF图像压缩质量等级指南
质量等级 大约的尺寸减少 最适合
80–100% 10–30% 印刷质量的文档、医疗记录、法律文件
60–79% 40–60% 内部报告、网页下载PDF、电子邮件附件
40–59% 60–75% 缩略图预览、草稿文档、存档副本
低于40% 75%+ 输出严重降级;通常不推荐分发

当源PDF由高分辨率照片或扫描页组装但文档只用于屏幕查看时,分辨率缩放效果最佳。 在这些情况下,缩放分辨率可以减少文件大小,而在正常缩放级别下没有感知的质量变化。 有关PDF图像编码标准的更多背景,请参阅 国会图书馆的JPEG 2000格式文档Stack Overflow上的PDF图像压缩讨论

重要避免压缩包含数字签名的PDF。 修改嵌入图像会更改文档的二进制内容,从而使现有签名无效。)}]

如何进一步减少图像压缩之外的PDF文件大小?

图像压缩处理了大多数PDF文件中大小的最大贡献者,但结合其他技术可以进一步减少尺寸。 IronPDF 支持多种方法,可与 compressImages() 互补:

删除不需要的页面。 在压缩前删除页面可以减少图像数据和页面结构开销。 使用删除特定页面的示例来先删除空白或冗余页面。

去除注释。 注释对象向文件添加二进制数据。在保存之前使用注释管理API去除它们可以显著减少带有大量标记的文档的文件大小。

批量处理文档。对于需要压缩大量 PDF 的工作流,请遍历文件路径列表,并在循环中应用 IronPDF 会独立处理每个文档,因此批量处理无需特殊配置——请参考 pdf-compression 示例作为起点。

对于PDF优化策略的更广泛讨论,国会图书馆的PDF文件格式规范记录了贡献文件大小的结构元素以及如何减少它们。

在Java中压缩PDF的下一步是什么?

IronPDFcompressImages() 方法为在 Java 应用程序中减小 PDF 文件大小提供了一种实用方法。 单次方法调用加上一个质量整数涵盖了大多数用例,而可选的分辨率缩放参数处理需要最激进减少的图像较多的源文件。

通过免费试用开始在您自己的文档上测试压缩:

准备好了解 IronPDF 还能做什么了吗? 在这里查看完整的Java PDF教程库:IronPDF Java 指南

常见问题解答

什么是 PDF 压缩,为什么它很重要?

PDF压缩通过重新采样嵌入的图像并可选地调整其显示分辨率来减小文件大小。较小的文件更易于通过电子邮件发送、上传和存储——IronPDF的compressImages()方法在Java应用程序中用一个方法调用即可实现。

如何在 Java 中快速压缩 PDF 文件?

使用PdfDocument.fromFile()加载您的PDF,调用compressImages(60)将图像质量降低到60%,然后使用saveAs()保存结果。这三行代码处理核心压缩工作流程。

我的 PDF 文件应使用何种压缩质量级别?

60-70% 的值为大多数文档提供了文件大小和视觉质量的良好平衡。对于打印质量或法律文档,使用80-100%,而仅用于草稿或缩略图预览时图像保真度不重要时,则使用40-59%。

能否压缩包含多个合并文档的 PDF?

是的,IronPDF可以压缩任何PDF,无论它是如何组合的。compressImages()方法针对文档中的所有嵌入图像,无论它们来自单个来源还是多个合并文件。

压缩是否会影响水印或表格等其他 PDF 功能?

否——IronPDF的压缩仅针对嵌入的光栅图像。输出文档中的文本、矢量图形、水印、背景、书签和表单字段将被保留。

哪些部署环境支持IronPDF的PDF压缩?

IronPDF支持在AWS Lambda、Azure Functions、Google Cloud和标准服务器部署上进行PDF压缩。在这些环境中不需要外部渲染引擎或PDF查看器。

scaleImageResolutionToVisibleSize参数的作用是什么?

当设置为true时,IronPDF检测以其原生分辨率的一部分渲染的图像,并将其像素尺寸缩小以匹配可见显示大小。这比单纯的质量下降能够进一步减小文件大小,但处理时间略有增加。

压缩PDF会使其数字签名失效吗?

是的。修改嵌入的图像会改变文档的二进制内容,从而破坏现有的数字签名。在应用签名之前而不是之后压缩PDF文件。

Darrius Serrant
全栈软件工程师(WebOps)

Darrius Serrant 拥有迈阿密大学的计算机科学学士学位,目前在 Iron Software 担任全栈 WebOps 市场工程师。从小就被编码吸引,他认为计算机既神秘又易于接触,使其成为创意和问题解决的理想媒介。

在 Iron Software,Darrius 喜欢创造新事物,并简化复杂概念以使其更易理解。作为我们常驻的开发者之一,他还自愿教授学生,与下一代分享他的专业知识。

对于 Darrius 来说,他的工作令人满意,因为它被重视并产生真正的影响。

准备开始了吗?
版本: 2026.5 just released
Still Scrolling Icon

还在滚动吗?

想快速获得证据?
运行示例看着你的HTML代码变成PDF文件。