如何在Python中壓縮PDF文件
IronPDF的CompressImages方法使Python開發者能夠通過調整嵌入圖像的壓縮質量設置來減小PDF文件大小,有助於優化儲存,並在不犧牲可讀性的情況下加快文件共享。
快速入門:在Python中壓縮PDF文件
:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-compress-pdf/quickstart.pyfrom ironpdf import PdfDocument
# 1. Install IronPDF: pip install ironpdf
# 2. Load your PDF
pdf = PdfDocument("your-file.pdf")
# 3. Compress images (quality: 1-100)
pdf.CompressImages(60)
# 4. Save compressed PDF
pdf.SaveAs("compressed.pdf")
# 5. Adjust quality parameter to balance size vs quality
最小流程(5個步驟)
- 安裝壓縮PDF文件所需的Python程式庫
- 使用
PdfDocument載入PDF文件 - 調用
CompressImages並傳遞一個整數質量值(1–100) - 使用
SaveAs保存縮小尺寸的文件 - 在任何PDF查看器中查看輸出以確認質量
PDF文件被廣泛用於文件儲存和共享,但它們的文件大小可能會變得非常大。 上傳或發送一個10 MB的報告明顯比分享一個2 MB的報告更慢,並且當文件數量大時,儲存成本會累積。 PDF壓縮通過在保持內容可讀性的同時減小文件大小來解決這一問題。
本指南將介紹如何使用IronPDF在Python中壓縮PDF文件。 實際程式碼範例涵蓋了標準圖像壓縮和基於解析度的高級壓縮,因此您可以選擇適合管道的方式。無論是進行HTML到PDF的轉換還是已有文件,均用同一壓縮API。
什麼是IronPDF以及為什麼用它來進行PDF壓縮?
IronPDF是一個Python PDF程式庫,處理PDF文件的建立、閱讀、編輯和優化。 它可處理從頭生成的文件、從HTML轉換的文件或從磁碟載入的文件。 其壓縮API針對圖片,圖片是造成PDF文件體積大的主要原因。
CompressImages方法接受一個從1到100的整數質量值,以及一個可選的布林值,可以將圖片縮小到其可見解析度。 這種雙參數設計讓您能夠精確調整壓縮:例如,高流量的報告儀表板可能使用質量70以保持圖像清晰,而內部檔案系統可能使用質量40以最大限度地節省儲存空間。 該程式庫內部處理所有編碼,無需其他依賴項。
IronPDF是Iron Suite的一部分,涵蓋文件建立、條碼處理、OCR和ZIP壓縮存檔,統一於Python安裝。 對於已使用IronPDF進行從零建立PDF的開發者而言,壓縮是保存或分發文件前的自然后續步驟。
如何在Python中安裝IronPDF?
:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-compress-pdf/install.sh
:ProductInstall:ProductInstall
:ProductInstall安裝後,在生產環境中配置您的授權金鑰。 IronPDF包含免費的30天試用,涵蓋所有功能,包括壓縮,不需要信用卡。 PyPI包頁面列出最新版本說明和依賴項細節。
如何使用IronPDF壓縮PDF文件?
傳遞一個整數質量值給CompressImages,以減小整個文件中嵌入圖像的尺寸。 較低的整數會產生較小的文件,但影響圖像品質; 較高的整數保留更多細節。 以下範例展示了標準壓縮調用和高級調用,後者還將圖像縮小到其可見尺寸。
:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-compress-pdf/compress-basic.pyfrom ironpdf import PdfDocument
# Load the PDF document from a file
pdf = PdfDocument("Image based PDF.pdf")
# Compress images to quality 60 (lower numbers increase compression)
pdf.CompressImages(60)
pdf.SaveAs("document_compressed.pdf")
# Advanced: also scale images down to their visible size in the PDF
# Note: scaling can affect image clarity if pages are resized later
pdf.CompressImages(90, True)
pdf.SaveAs("Compressed.pdf")
壓縮參數意味著什麼?
CompressImages接受兩個參數:
- 質量(必需):1到100之間的一個整數。值為100指保留原始圖像質量,不進行壓縮。 40到80之間的值涵蓋大多數實際使用場景,60是面向通用文件的一個常見起始點。
- 縮放到可見尺寸(可選):布林值,預設為
False。 當True時,每張圖像會重新採樣以匹配其在頁面上呈現的尺寸。 這在質量壓縮基礎上增加了一個第二次的縮小過程,產生更小的文件大小。 注意,隨後用於高DPI縮放或列印的頁面可能會顯示出瑕疵。
保存後,將壓縮文件與原件在任何PDF查看器中比較,以確認質量是否符合您的要求。 欲了解更多模式範例,請參閱PDF壓縮範例頁面。
壓縮前PDF看起來怎樣?
![]()
壓縮後PDF顯示如何?
![]()
比較顯示,使用質量60從458 KB減少到357 KB(約22%)。含有相對較多攝影內容的文件通常比以文字或向量圖形為主的文件達到更大的壓縮效果。
如何批量壓縮多個PDF文件?
處理包含PDF文件的文件夾遵循一樣的API:對每個CompressImages,然後保存結果。 下面的函式將該模式封裝成可重用的工具。
:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-compress-pdf/batch-compress.py
import os
from ironpdf import PdfDocument
def batch_compress_pdfs(input_folder, output_folder, quality=60):
"""
Compress all PDF files in a folder.
Args:
input_folder: Path to folder containing source PDFs
output_folder: Path where compressed PDFs will be saved
quality: Compression quality (1–100); default is 60
"""
# Create the output folder if it does not exist
os.makedirs(output_folder, exist_ok=True)
for filename in os.listdir(input_folder):
if filename.endswith(".pdf"):
input_path = os.path.join(input_folder, filename)
output_path = os.path.join(output_folder, f"compressed_{filename}")
try:
pdf = PdfDocument(input_path)
pdf.CompressImages(quality)
pdf.SaveAs(output_path)
print(f"Compressed: {filename}")
except Exception as e:
print(f"Error compressing {filename}: {e}")import os
from ironpdf import PdfDocument
def batch_compress_pdfs(input_folder, output_folder, quality=60):
"""
Compress all PDF files in a folder.
Args:
input_folder: Path to folder containing source PDFs
output_folder: Path where compressed PDFs will be saved
quality: Compression quality (1–100); default is 60
"""
# Create the output folder if it does not exist
os.makedirs(output_folder, exist_ok=True)
for filename in os.listdir(input_folder):
if filename.endswith(".pdf"):
input_path = os.path.join(input_folder, filename)
output_path = os.path.join(output_folder, f"compressed_{filename}")
try:
pdf = PdfDocument(input_path)
pdf.CompressImages(quality)
pdf.SaveAs(output_path)
print(f"Compressed: {filename}")
except Exception as e:
print(f"Error compressing {filename}: {e}")
import os
from ironpdf import PdfDocument
def batch_compress_pdfs(input_folder, output_folder, quality=60):
"""
Compress all PDF files in a folder.
Args:
input_folder: Path to folder containing source PDFs
output_folder: Path where compressed PDFs will be saved
quality: Compression quality (1–100); default is 60
"""
# Create the output folder if it does not exist
os.makedirs(output_folder, exist_ok=True)
for filename in os.listdir(input_folder):
if filename.endswith(".pdf"):
input_path = os.path.join(input_folder, filename)
output_path = os.path.join(output_folder, f"compressed_{filename}")
try:
pdf = PdfDocument(input_path)
pdf.CompressImages(quality)
pdf.SaveAs(output_path)
print(f"Compressed: {filename}")
except Exception as e:
print(f"Error compressing {filename}: {e}")except塊防止單個損壞或受密碼保護的文件阻礙整個批次。 將文件名稱與異常消息一起記錄,使得很容易識別需手動檢查的文件。 對於更大量的管道,考慮將文件夾拆分為塊,以並行執行緒形式處理它們。
應使用哪些質量設定進行PDF壓縮?
正確的質量設定取決於壓縮後PDF將如何使用。 三個區間涵蓋了最常見的情況。
高質量(70–90):有意於列印或正式分發的文件得益於保持在這一範圍內。 文字保持清晰,圖表在標準列印解析度下仍然清晰可見。 文件大小縮減幅度不大,通常在10–25%之間,但對於大多數讀者而言,輸出版難以與來源版區分。
中等質量(50–70):這一區間適用於網頁交付和電子郵件附件。 攝影內容在仔細查看時顯示出輕微柔化,但文件大小的減少(通常為25–50%)顯著改善載入時間和電郵送達率。 大多數文件管理系統和門戶上傳在質量60時運行良好。
強效壓縮(30–50):內部存檔、長期儲存備份,以及不會列印的文件可以使用此區間。 在質量40時,圖像明顯柔化,但由PDF引擎(而非嵌入式圖像)渲染的文字保持完全清晰。該方法也適用於將文件轉換為圖像並在顯示前重新調整的情況。
如何在Python中驗證壓縮結果?
透過程式驗證輸出文件大小可以在文件進入管道的下一步之前確認壓縮是否達到您的目標。Python內建的os.path.getsize會返回任何文件路徑的字節計數,因此驗證不需要額外的程式庫。
:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-compress-pdf/verify-compression.pyimport os
from ironpdf import PdfDocument
# Load and compress the document
pdf = PdfDocument("report.pdf")
original_size = os.path.getsize("report.pdf")
pdf.CompressImages(60)
pdf.SaveAs("report_compressed.pdf")
compressed_size = os.path.getsize("report_compressed.pdf")
reduction_pct = (1 - compressed_size / original_size) * 100
# Report results to confirm compression was effective
print(f"Original: {original_size / 1024:.1f} KB")
print(f"Compressed: {compressed_size / 1024:.1f} KB")
print(f"Reduction: {reduction_pct:.1f}%")
輸出提供了明確的縮減百分比,可被記錄或與門檻比較。 如果縮減幅度低於預期,文件可能包含很少或沒有嵌入圖像。 此時,無論質量設置如何,文件大小幾乎保持不變,因為CompressImages僅針對光柵圖像。 文字和向量圖形不受此法影響。
Python中PDF壓縮的下一步是什麼?
IronPDF的CompressImages方法為Python開發者提供了單一且範圍明確的API來減小PDF文件大小。 調整質量參數以平衡儲存節省與視覺清晰度,並為固定輸出尺寸時新增解析度縮放布林值進行第二次縮減。 要想全面了解IronPDF處理的內容,請查閱Python PDF程式庫概述頁面。
開始您的免費試用以測試壓縮及IronPDF的全功能集,包括HTML到PDF的轉換、數位簽名、表單處理和文件合併。 試用期結束後,查看授權選項以尋找適合您的部署方案。
準備好瞭解IronPDF能做的其他事情嗎? 探索完整的Python PDF教學,了解IronPDF的核心功能。
常見問題
如何安裝IronPDF以壓縮Python中的PDF文件?
在終端中運行pip install ironpdf。Python的IronPDF需要先安裝.NET 6.0 SDK。安裝後從ironpdf包中導入PdfDocument以開始壓縮PDF。
在Python中壓縮PDF文件的基本程式碼是什麼?
使用PdfDocument("your-file.pdf")載入文件,以1到100之間的質量整數值調用CompressImages(60),並使用SaveAs("compressed.pdf")保存結果。調整質量值以在文件大小和圖片保真度之間取得平衡。
質量參數如何影響PDF壓縮?
CompressImages的質量參數範圍是1到100。較低的值會產生更多可見圖像柔化的較小文件。較高的值在代價是較大的文件的同時保留更多細節。40到80之間的值涵蓋了大多數實際使用案例,60是常見的起始點。
我可以將第二個參數傳遞給CompressImages嗎?
可以。將True作為第二個參數傳遞告訴IronPDF在應用質量壓縮之前,將每張圖片重新取樣到其可見尺寸。這增加了一個第二次減小通過,並產生較小的文件,但以後在較高DPI下縮放或列印的頁面可能會顯示偽影。
PDF壓縮會影響文字和矢量圖形嗎?
CompressImages針對嵌入PDF中的點陣圖像。PDF引擎渲染的文字和矢量圖形不受此方法影響,因此嵌入影像較少或沒有影像的文件將顯示最少的尺寸減小。
如何在Python中驗證文件尺寸減小?
使用os.path.getsize("compressed.pdf")檢索保存文件的字節數,並將其與原始文件進行比較。用差除以原始尺寸,將減小百分比作為浮點數給出。
適合網頁傳遞的最佳質量範圍是多少?
50到70之間的質量設定適合大多數網頁傳遞和電子郵件場景。這一範圍通常將文件尺寸減少25到50%,同時保持顯示閱讀的照片內容在螢幕上的視覺可接受性。







