如何在Java中壓縮PDF文件
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.*; import 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文件被廣泛用於共享和儲存資訊,但圖片多的文件可能快速達到數十Megabyte。 大文件尺寸使電子郵件傳送、上傳速度減慢,並增加儲存成本。 IronPDF的Java壓縮API解決了這個問題,允許您用幾行程式碼降低嵌入圖片的質量和縮放解析度。
本文講述如何使用IronPDF在Java中壓縮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;
import 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;
import 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,程式庫檢測到以其本地解析度一部分呈現的圖片並相應縮小它們。 此選項提供了最積極的尺寸縮減,但稍微增加了處理時間。
對於圖片多的PDF進行60%的壓縮傳球通常會減少50-70%的文件尺寸,這取決於源圖片。 主要含文字內容的文件將看到更小的增益。 在輸出目錄中比較壓縮前後的文件尺寸,以便為您的具體文件評估結果。
對於需要與壓縮一起進行其他處理的文件,IronPDF支持提取文字、提取圖片和拆分PDF。
原始PDF樣子如何?
![]()
壓縮後的結果如何?
![]()
如何選擇正確的壓縮質量設置?
選擇正確的質量水平需要在文件尺寸和視覺保真度之間進行權衡。 正確的設置取決於文件的用途及其嵌入圖片的敏感性。
下表為常見用途提供了實用的指南:
| 質量水平 | 大約尺寸減少 | 最佳用途 |
|---|---|---|
| 80–100% | 10–30% | 列印質量的文件、醫療記錄、法律文件 |
| 60–79% | 40–60% | 內部報告、網路下載PDF、電子郵件附件 |
| 40–59% | 60–75% | 縮略圖預覽、草稿文件、存檔副本 |
| 低於40% | 75%+ | 嚴重退化的輸出;一般不建議用於分發 |
當源PDF是由高解析度的照片或掃描的頁面組成但文件僅為螢幕查看而設計時,解析度縮放效果最好。 在這種情況下,縮小解析度可以在正常縮放級別下減少文件大小而不會有明顯的質量變化。 有關PDF圖片編碼標準的進一步背景資訊,請參閱國會圖書館的JPEG 2000格式文件和Stack Overflow上的PDF圖片壓縮討論。
我如何在超越圖片壓縮的情況下進一步減少PDF文件大小?
圖片壓縮處理了大多數PDF中最大尺寸的貢獻者,但當結合使用時,其他技術可以進一步減少大小。 compressImages():
移除不需要的頁面。 在壓縮前刪除頁面減少了圖片資料和頁面結構開銷。 使用頁面刪除範例首先刪除空白或多餘的頁面。
剝離註釋。 註釋物件新增了二進制資料到文件中。保存前使用註釋管理API去掉它們,這可以在帶有較多標記的文件中顯著減小文件大小。
批量處理文件。 對於壓縮許多PDF的工作流程,遍歷一個文件路徑列表並在迴圈中應用IronPDF獨立處理每個文件,因此批量處理不需要特殊配置—請參見pdf-compression範例以獲取起始點。
對於更廣泛的PDF優化策略討論,國會圖書館的PDF文件格式規範文件了對文件大小貢獻的結構元素及其可能被減少的方法。
在Java中壓縮PDF的下一步是什麼?
compressImages()方法為在Java應用中減少PDF文件大小提供了一個實用的方法。 使用一個帶有質量整數的方法調用覆蓋大多數用例,而可選的解析度縮放參數處理需要最強減小力度的圖片多的源文件。
從免費試用開始,在您的文件上測試壓縮:
準備好看看IronPDF還能做什麼嗎? 在這裡查看完整的Java PDF教程程式庫:IronPDF Java使用指南
常見問題
什麼是 PDF 壓縮以及為什麼它很重要?
PDF 壓縮通過重新採樣嵌入的圖片並選擇性地調整其顯示解析度來減少檔案大小。較小的檔案更容易發送電子郵件、上傳和儲存——IronPDF 的 compressImages() 方法在 Java 應用程式中通過單一方法調用來處理這一點。
如何快速在 Java 中壓縮 PDF 檔案?
using 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 檔案,而不是之後。


