如何在 Java 中压缩 PDF 文件 Copy for LLMsCopy for LLMs Copy page as Markdown for LLMs
# 如何在 Java 中压缩 PDF 文件
IronPDF 使 Java 开发人员能够通过降低图像质量和缩放分辨率来压缩 PDF 文件,从而帮助减小文件大小,方便共享和存储。
*as-heading:2(快速开始:在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,且所有这些功能在压缩后都能保留。
[[i:(压缩对包含嵌入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](https://search.maven.org/artifact/com.ironsoftware/ironpdf)获得。 为了生产部署,[在运行前配置您的许可证密钥](https://ironpdf.com/java/get-started/license-keys/)。
## 如何在Java中压缩PDF文件?
`IronPDF`通过定位嵌入在文档中的图像来压缩PDF文件。 `compressImages()`方法接受一个从0到100的整数作为质量,其中较低的值会产生较小的文件,但会牺牲图像清晰度。 可选的第二个参数指示库根据PDF页面中的显示大小缩小图像分辨率。
```java
//: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"));
}
}
```
代码从磁盘加载PDF,并通过两个过程应用压缩以说明不同的策略。 第一个`compressImages(60)`调用将图像质量降低到60%并保存结果。 第二次调用使用90%质量但启用了分辨率缩放,这会调整每个图像的像素尺寸,使其与页面上的可见区域相匹配。
`compressImages()`方法有两个签名:
- **`compressImages(int quality)`** - 将所有嵌入图像的重新采样到给定的JPEG质量水平。 使用40到80之间的值以强力减少大小,同时保持图像可识别性。
- **`compressImages(int quality, boolean scaleImageResolutionToVisibleSize)`** - 添加分辨率缩放。 当`true`时,库将检测以其原生分辨率一部分呈现出来的图像并相应地将其缩小。 此选项提供最激进的尺寸减小,但稍微增加处理时间。
[[t:(应用多次迭代以微调大小和质量的平衡。 从70%的中等设置开始,检查输出文件大小,然后决定是否需要第二次以较低质量的迭代。)]]
在图像较多的PDF上运行60%的压缩过程通常会根据源图像减少文件大小50-70%。 主要为文本内容的文档将看到更小的增益。 在输出目录中比较压缩前后的文件大小,以评估您具体文档的结果。
对于需要在压缩同时进行其他处理的文档,`IronPDF`支持[提取文本](https://ironpdf.com/java/examples/extract-text-from-pdf/),[提取图像](https://ironpdf.com/java/examples/extract-image-from-pdf/),和[拆分PDF](https://ironpdf.com/java/examples/split-pdfs/)。
### 原始 PDF 看起来像什么?

### 压缩后的结果如何?

## 如何选择正确的压缩质量设置?
选择正确的质量级别需要在文件大小和视觉保真度之间取得平衡。 正确的设置取决于文档的用途及其嵌入图像的敏感性。
下表提供了常见用例的实际指导:
<table class="content__data-table" data-content-table>
<caption>IronPDF图像压缩质量等级指南</caption>
<thead>
<tr>
<th>质量等级</th>
<th>大约的尺寸减少</th>
<th>最适合</th>
</tr>
</thead>
<tbody>
<tr>
<td>80-100%</td>
<td>10-30%</td>
<td>印刷质量的文档、医疗记录、法律文件</td>
</tr>
<tr>
<td>60-79%</td>
<td>40-60%</td>
<td>内部报告、网页下载PDF、电子邮件附件</td>
</tr>
<tr>
<td>40-59%</td>
<td>60-75%</td>
<td>缩略图预览、草稿文档、存档副本</td>
</tr>
<tr>
<td>低于40%</td>
<td>75%+</td>
<td>输出严重降级;通常不推荐分发</td>
</tr>
</tbody>
</table>
当源PDF由高分辨率照片或扫描页组装但文档只用于屏幕查看时,分辨率缩放效果最佳。 在这些情况下,缩放分辨率可以减少文件大小,而在正常缩放级别下没有感知的质量变化。 有关PDF图像编码标准的更多背景,请参阅 [国会图书馆的JPEG 2000格式文档](https://www.loc.gov/preservation/digital/formats/fdd/fdd000143.shtml) 和 [Stack Overflow上的PDF图像压缩讨论](https://stackoverflow.com/questions/37019731/pdf-compression-techniques)。
[[n:(避免压缩包含数字签名的PDF。 修改嵌入图像会更改文档的二进制内容,从而使现有签名无效。)]]
## 如何进一步减少图像压缩之外的PDF文件大小?
图像压缩处理了大多数PDF文件中大小的最大贡献者,但结合其他技术可以进一步减少尺寸。 `compressImages()`互补:
**删除不需要的页面。** 在压缩前删除页面可以减少图像数据和页面结构开销。 使用[删除特定页面的示例](https://ironpdf.com/java/examples/delete-specific-pages/)来先删除空白或冗余页面。
**去除注释。** 注释对象向文件添加二进制数据。在保存之前使用[注释管理API](https://ironpdf.com/java/examples/annotations/)去除它们可以显著减少带有大量标记的文档的文件大小。
**批量处理文档。**对于需要压缩多个PDF的工作流,在文件路径列表上迭代并在循环中应用`IronPDF`独立处理每个文档,因此批处理不需要特殊配置 - 请参阅[pdf压缩示例](https://ironpdf.com/java/examples/pdf-compression/)以开始。
对于PDF优化策略的更广泛讨论,[国会图书馆的PDF文件格式规范](https://www.loc.gov/preservation/digital/formats/fdd/fdd000030.shtml)记录了贡献文件大小的结构元素以及如何减少它们。
## 在Java中压缩PDF的下一步是什么?
`compressImages()`方法为在Java应用程序中减少PDF文件大小提供了一种实用的方法。 单次方法调用加上一个质量整数涵盖了大多数用例,而可选的分辨率缩放参数处理需要最激进减少的图像较多的源文件。
通过免费试用开始在您自己的文档上测试压缩:
- [开始您的免费试用](#trial-license) - 无需信用卡
- [查看许可证选项](#licensing) - 许可证从`$liteLicense`开始
准备好看看`IronPDF`还能做什么? 在这里查看完整的Java PDF教程库:[IronPDF Java 指南](/java/how-to/java-create-pdf-tutorial/)
Ask ChatGPT about this page
Ask Gemini about this page
Ask Perplexity about this page
IronPDF 使 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"));
//: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"));
Text
最小工作流程(5 个步骤)
将IronPDF作为依赖添加到您的Maven pom.xml
使用PdfDocument.fromFile()加载您的PDF
使用pdf.compressImages(60)压缩图像
可选使用pdf.compressImages(90, true)缩放图像分辨率
使用pdf.saveAs()保存压缩的PDF
PDF文档广泛用于共享和存储信息,但图像较多的文件很快就会达到数十兆字节。 大文件大小会使电子邮件传递复杂化,上传速度变慢,并增加存储成本。 IronPDF的Java压缩API通过让您在代码中用几行代码降低嵌入图像的质量和缩放分辨率来解决此问题。
本文将介绍如何在Java中使用IronPDF压缩PDF文件。 示例展示了简单的基于质量的压缩和分辨率缩放,因此您可以根据具体的尺寸和质量要求选择适合的方法。 如果您还在处理图像较多的PDF 或需要处理合并的文档 ,压缩是分发前的一个重要步骤。
什么是IronPDF Java PDF库?
IronPDF是一个Java PDF库 ,可通过编程方式创建、读取和操作PDF文档。 该库处理HTML到PDF的转换 、表单填写、图像嵌入和文件压缩,而无需PDF查看器或外部渲染引擎。它支持多种部署环境,包括AWS Lambda 、Azure Functions 和 Google Cloud 。
IronPDF中的压缩通过重新采样嵌入的图像到较低的JPEG质量水平来实现,并且可选地将其分辨率降低到PDF中的显示大小。 文本、矢量图形和文档结构不受影响。 这使得IronPDF成为需要快速通过电子邮件传输或存储在云系统中的大量文件的实用选择。
该库还可以很好地与其他文档操作一起工作:您可以压缩已经有水印 、背景层 和书签 的PDF,且所有这些功能在压缩后都能保留。
压缩对包含嵌入JPEG或PNG图像的PDF最为有效。 主要由文本和矢量图形组成的文档将看到最小的尺寸减少。
如何在Java Maven项目中设置IronPDF?
在压缩PDF之前,将IronPDF添加到您的项目的Maven配置中。 有关完整设置说明,请参阅快速入门指南 。
一旦依赖解决,您可以在项目中导入和使用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 看起来像什么?
压缩后的结果如何?
如何选择正确的压缩质量设置?
选择正确的质量级别需要在文件大小和视觉保真度之间取得平衡。 正确的设置取决于文档的用途及其嵌入图像的敏感性。
下表提供了常见用例的实际指导:
当源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压缩通过重新采样嵌入的图像并可选地调整其显示分辨率来减小文件大小。较小的文件更易于通过电子邮件发送、上传和存储——IronPDF的compressImages()方法在Java应用程序中用一个方法调用即可实现。
使用PdfDocument.fromFile()加载您的PDF,调用compressImages(60)将图像质量降低到60%,然后使用saveAs()保存结果。这三行代码处理核心压缩工作流程。
60-70% 的值为大多数文档提供了文件大小和视觉质量的良好平衡。对于打印质量或法律文档,使用80-100%,而仅用于草稿或缩略图预览时图像保真度不重要时,则使用40-59%。
是的,IronPDF可以压缩任何PDF,无论它是如何组合的。compressImages()方法针对文档中的所有嵌入图像,无论它们来自单个来源还是多个合并文件。
否——IronPDF的压缩仅针对嵌入的光栅图像。输出文档中的文本、矢量图形、水印、背景、书签和表单字段将被保留。
IronPDF支持在AWS Lambda、Azure Functions、Google Cloud和标准服务器部署上进行PDF压缩。在这些环境中不需要外部渲染引擎或PDF查看器。
当设置为true时,IronPDF检测以其原生分辨率的一部分渲染的图像,并将其像素尺寸缩小以匹配可见显示大小。这比单纯的质量下降能够进一步减小文件大小,但处理时间略有增加。
是的。修改嵌入的图像会改变文档的二进制内容,从而破坏现有的数字签名。在应用签名之前而不是之后压缩PDF文件。
Beyond image compression, IronPDF provides techniques such as page deletion, annotation removal, and bulk processing to further reduce PDF file sizes.
You can start using IronPDF with a free trial available on their website. Additionally, explore more resources and how-to guides in the IronPDF Java tutorial library for comprehensive learning.
技术作家
Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。
...
阅读更多