如何在Java中压缩PDF文件

如何在 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>
  • 保存您的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 压缩前的原始 PDF 文件大小为 458 KB

压缩后的结果如何?

文件资源管理器显示使用 IronPDF 在 60% 质量下进行 compressImages 后明显减少的压缩 PDF 输出文件大小

Icon Quote related to 压缩后的结果如何?

我最喜欢的这种库是 IronPDF。它允许快速高效地操作 PDF 文件。它还具有许多有价值的功能,比如导出为 PDF/A 格式和数字签名 PDF 文档。

Milan Jovanovic related to 压缩后的结果如何?

Milan Jovanovic

微软MVP

查看案例研究
Icon Quote related to 压缩后的结果如何?

IronOCR 意味着我们每年可以节省 $40,000 的人工处理成本,同时提高生产力,并释放资源用于高影响任务。我强烈推荐它。

Brent Matzelle related to 压缩后的结果如何?

Brent Matzelle

首席技术官,OPYN

查看案例研究
Icon Quote related to 压缩后的结果如何?

Iron Suite 在我们的运营中起着至关重要的作用。这些工具提高了业务各方面的效率,包括创建平面图和改善库存管理。

David Jones related to 压缩后的结果如何?

David Jones

首席软件工程师,Agorus Build

查看案例研究

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

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

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

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文件中大小的最大贡献者,但结合其他技术可以进一步减少尺寸。 compressImages()互补:

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

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

批量处理文档。对于需要压缩多个PDF的工作流,在文件路径列表上迭代并在循环中应用IronPDF独立处理每个文档,因此批处理不需要特殊配置—请参阅pdf压缩示例以开始。

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

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

compressImages()方法为在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.6 刚刚发布
Still Scrolling Icon

还在滚动吗?

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