不同的組織使用 PDF 文件進行安全且有組織的信息交換。但是,有時 PDF 文件會由於嵌入的內容(如圖像、視頻、繪圖等)而變得非常大。您可以輕鬆地優化或壓縮此類 PDF 文件的大小,而不會影響質量。讓我們探索以下 PDF 大小壓縮和優化場景,您可以將它們合併到您的 Java 應用程序中:

PDF 大小優化和壓縮 API – 安裝

您可以利用 Aspose.PDF for Java API 的高效可靠例程來優化或壓縮大尺寸 PDF 文件,同時保持相同的質量。您可以從 下載 或使用項目中的 Maven 配置 下載 JAR 文件。

使用 Java 為 Web 優化 PDF 文檔

當您需要在網頁中使用 PDF 文檔時,可以對其進行優化。此優化有助於盡快顯示 PDF 文檔的第一頁。您可以按照以下步驟獲得優化後的 PDF 文件:

  1. 開源 PDF 文件
  2. 調用【優化方法】5進行PDF優化
  3. 保存輸出的 PDF 文件

下面的代碼片段是如何在您的 Java 環境中為 Web 優化 PDF 文檔的示例:

// 打開文檔
Document pdfDocument = new Document("Original.pdf");

// 針對網絡進行優化
pdfDocument.optimize();

// 保存輸出文檔
pdfDocument.save("Optimized_output.pdf");

使用 Java 壓縮或優化包含圖像的 PDF 的大小

這裡主要討論PDF文件包含大量圖片,體積龐大的場景。例如,一個 PDF 文件包含不同型號飛機的圖紙和每個部件(次要或主要)的信息,包括所有組件的圖像或圖片。此外,許多專業文檔可能包含圖像作為文件的主要人工製品。在這種情況下,我們可以使用以下方法壓縮 PDF 文件:

使用 Java 縮小、壓縮和調整所有圖像的大小

您可以通過縮小、壓縮和調整圖像大小來最小化包含許多圖像的 PDF 文件的大小。大小的改進可能很明顯,因為大部分文件大小都被我們現在打算縮小的圖片覆蓋了。您需要按照以下步驟縮小、壓縮和調整 PDF 文件中的圖片或圖像的大小:

  1. 加載輸入 PDF 文件
  2. 初始化 OptimizationOptions 對象
  3. 設置圖像質量和分辨率
  4. 調用 optimizeResources 方法
  5. 保存輸出的 PDF 文檔

下面的代碼片段顯示瞭如何使用 Java 縮小或壓縮圖像以減小和最小化 PDF 文件的大小:

// 加載輸入文檔
Document doc = new Document(dataDir + "Test.pdf");

// 初始化優化選項對象
OptimizationOptions opt = new OptimizationOptions();

// 啟用圖像壓縮
// 設置 PDF 文件中圖像的質量和分辨率
opt.getImageCompressionOptions().setCompressImages(true);
opt.getImageCompressionOptions().setImageQuality(10);
opt.getImageCompressionOptions().setMaxResolution(150);
opt.getImageCompressionOptions().setResizeImages(true);
doc.optimizeResources(opt);

// 保存更新的文件
doc.save(dataDir + "compressingPDFWithImages_out.pdf");

使用 Java 刪除嵌入的字體、未使用的流和鏈接重複的流

當您需要減小 PDF 文件大小時,每個字節都很重要。嵌入式字體可以通過不同的方法幫助減小文件大小。例如,您可以取消嵌入所有字體,也可以只保留 PDF 文件中使用的字體字符子集。這將是部分取消嵌入的字體,但仍有助於最小化文件大小。此外,您可以刪除未使用的流或鏈接重複的流以節省更多空間。這些 PDF 優化將大大減小文件大小。您需要按照以下步驟優化和減小 PDF 文件大小:

  1. 加載輸入 PDF 文檔
  2. 初始化 OptimizationOptions 類對象
  3. 取消嵌入所有字體或字體子集
  4. 鏈接重複的流
  5. 刪除未使用的流

以下代碼詳細說明瞭如何壓縮 PDF 文件以優化、減少和最小化 PDF 文檔的大小:

Document doc = new Document(dataDir + "Test.pdf");
OptimizationOptions opt = new OptimizationOptions();

// 任何一個
// 取消嵌入 PDF 中的所有字體
opt.setUnembedFonts(true);

//或者
// 只保留使用過的字符的嵌入字體
opt.setSubsetFonts(true);

// 鏈接重複的流
opt.setLinkDuplcateStreams(false);

// 刪除未使用的流
opt.setRemoveUnusedStreams(false);

// 刪除未使用的對象
opt.setRemoveUnusedObjects(false);

doc.optimizeResources(opt);

// 保存更新的文件
doc.save(dataDir + "compressingPDF.pdf");

到目前為止,我們主要討論了針對帶有圖像的 PDF 文件的優化方法。現在讓我們繼續進行 PDF 優化的更多方法。

使用 Java 壓縮或減小 PDF 文檔大小

PDF 文件通常包含註釋、可編輯的表單字段和顏色工件,它們共同佔據了空間。讓我們探索以下壓縮 PDF 文件大小的過程。

使用 Java 刪除或展平註釋以減小大小

PDF 文件可以包含很多註釋。例如,水印、評論、形狀等。如果不再需要註釋,您可以刪除註釋;如果不需要進一步更改,則可以加厚註釋。請按照以下步驟刪除或展平註釋以優化 PDF 文件大小:

  1. 開源 PDF 文檔
  2. 遍歷每個頁面
  3. 壓平或刪除註釋
  4. 保存輸出的 PDF 文檔

下面的代碼片段是一個示例,說明如何使用 Java 刪除或展平 PDF 文檔中的註釋:

// 打開文檔
Document pdfDocument = new Document(dataDir + "OptimizeDocument.pdf");

// 遍歷每個頁面和註釋
for (Page page : pdfDocument.getPages())
{
   for (Annotation annotation : page.getAnnotations())
    {
        // 要么展平註釋
        annotation.flatten();
        
        // 或者刪除註釋
        // page.getAnnotations().delete(註解);        
    }
}
// 保存優化的 PDF 文檔
pdfDocument.save(dataDir + "OptimizeDocument_out.pdf");

使用 Java 刪除表單域以最小化 PDF 文件大小

可填寫的 PDF 表單在需要大規模提交數據的地方很常見。提交數據後,可以刪除可填寫的表單字段以優化和最小化 PDF 文件大小。您需要按照以下步驟刪除表單字段:

  1. 加載輸入 PDF 文檔
  2. 檢查 PDF 文檔中的表單域
  3. 遍歷每個字段並將其展平
  4. 保存更新後的壓縮 PDF 文件
// 加載源 PDF 表單
Document doc = new Document(dataDir + "input.pdf");

// 展平表單域
if (doc.getForm().getFields().length > 0)
{
   for (Field item : doc.getForm().getFields())
    {
        item.flatten();
    }
}

dataDir = dataDir + "FlattenForms_out.pdf";
// 保存更新的文檔
doc.save(dataDir);

使用 Java 將 RGB 顏色空間轉換為灰度以進行 PDF 壓縮和優化

大多數 PDF 文件包含的文本內容也可以在灰度色彩空間中很好地表示。此外,當目的和優先級是保存每個字節時,甚至圖像也可以轉換為灰度,因為重點是歸檔數據。您可以按照以下步驟通過將 RGB 顏色空間轉換為灰度來壓縮和優化 PDF 文件大小:

  1. 訪問源 PDF 文檔
  2. 初始化 RgbToDeviceGrayConversionStrategy 實例
  3. 將每種顏色的顏色空間轉換為灰度
  4. 保存輸出優化的 PDF 文件

以下代碼片段顯示瞭如何在 Java 環境中通過更改顏色空間來壓縮和優化 PDF 大小:

// 加載輸入 PDF 文檔
Document document = new Document("input.pdf");

// 初始化 RgbToDeviceGrayConversionStrategy 實例
RgbToDeviceGrayConversionStrategy strategy = new RgbToDeviceGrayConversionStrategy();
for (int idxPage = 1; idxPage <= document.getPages().size(); idxPage++) {
	Page page = document.getPages().get_Item(idxPage);
        
        // 將每個頁面的顏色空間轉換為灰度
	strategy.convert(page);
}
// 保存輸出 PDF 文檔
document.save("output.pdf");

結論

在本文中,我們介紹了優化和壓縮 PDF 文件以減小尺寸的不同方式和方法。首先,我們使用 Java 為 Web 優化了 PDF 文件大小。然後我們學習了在包含多個圖像的 PDF 文件中對圖像進行縮小、壓縮和調整大小。此外,我們還探索了使用字體、流、註釋、表單字段以及將 PDF 文檔的顏色空間轉換為灰度,以便使用 Java 創建尺寸更小但質量相同的 PDF 文件。此外,如有與此主題相關的任何疑問,您可以通過免費支持論壇與我們聯繫。

也可以看看

信息:使用 Aspose 的新在線網絡應用程序,您可以將一組圖像轉換為視頻。您可能還想查看另一項服務,一項從視頻中提取聲音