如何在 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.*; 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 文件廣泛用於資訊的分享與儲存,但圖片過多的檔案很快就會達到數十兆位元組的大小。 大檔案會導致電子郵件傳送困難、上傳速度變慢,並增加儲存成本。 IronPDF 的 Java 壓縮 API 可透過幾行程式碼,讓您降低嵌入式影像品質並調整解析度,從而解決此問題。

本文介紹如何使用 IronPDF for Java 壓縮 PDF 檔案。 範例同時展示了基於品質的簡單壓縮與解析度縮放,因此您可以根據具體的尺寸和品質需求選擇合適的方法。 若您同時處理[大量圖片](https://ironpdf.com/java/how-to/java-pdf-to-image-tutorial/)的[ 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;
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"));
    }
}
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 compressImages 以 60% 品質壓縮後的 PDF 輸出檔案,檔案大小明顯減少

如何選擇合適的壓縮品質設定?

選擇合適的品質等級時,需在檔案大小與視覺還原度之間取得平衡。 正確的設定取決於文件的用途及其內嵌圖片的敏感程度。

下表針對常見使用情境提供實用指引:

IronPDF 圖片壓縮品質等級指南
品質等級 約略的篇幅縮減 最適合
80–100% 10–30% 印刷品質的文件、醫療紀錄、法律文件
60–79% 40–60% 內部報告、網頁下載的 PDF 檔案、電子郵件附件
40–59% 60–75% 縮圖預覽、草稿文件、存檔副本
低於 40% 75%+ 輸出品質嚴重下降;一般不建議用於發佈

當原始 PDF 雖由高解析度照片或掃描頁面組合而成,但文件僅供螢幕檢視時,解析度縮放功能的效果最佳。 在這些情況下,調整解析度可在正常Zoom等級下,在不影響畫質的情況下縮小檔案大小。 若需進一步了解 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% 的設定能在檔案大小與視覺品質之間取得良好平衡。若需 PRINT 品質或法律文件,請使用 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 檔案,而非簽署後。

Curtis Chau
技術撰稿人

Curtis Chau 擁有卡爾頓大學(Carleton University)的電腦科學學士學位,專精於前端開發,並精通 Node.js、TypeScript、JavaScript 及 React。他熱衷於打造直觀且美觀的用戶介面,喜歡運用現代框架,並創建結構完善、視覺上吸引人的手冊。

除了開發工作之外,Curtis 對物聯網(IoT)抱有濃厚興趣,致力於探索整合硬體與軟體的創新方法。閒暇時,他喜歡玩遊戲和開發 Discord 機器人,將對科技的熱愛與創意相結合。

準備開始了嗎?
版本: 2026.5 just released
Still Scrolling Icon

還在捲動嗎?

想要快速證明?
執行範例 觀看您的 HTML 變成 PDF。