IRONSOFTWAREHOME

如何用 Python 压缩 PDF 文件

Curtis Chau
Curtis Chau
Updated: 2026年6月4日

IronPDF的CompressImages方法让Python开发者通过调整质量设置压缩嵌入图像,以减少PDF文件大小,从而帮助优化存储并加快文档共享而不牺牲可读性。

快速入门:使用 Python 压缩 PDF 文件
from 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
Python

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?

:ProductInstall
SHELL
请注意: IronPDF for Python在IronPDF .NET库之上运行,需求.NET 6.0 SDK。 从官方Microsoft网站下载.NET 6.0 SDK,然后运行pip安装。

安装后,为生产环境配置您的许可证密钥。 IronPDF包含一个免费的30天试用,涵盖所有功能,包括压缩,无需信用卡。 PyPI包页面列出了最新发布说明和依赖详细信息。

如何使用IronPDF压缩PDF文件?

通过给CompressImages传递一个质量整数以减小整个文档中嵌入图像的大小。 较低的整数会产生较小的文件,但会降低图像保真度; 较高的整数保留更多细节。 下面的示例展示了标准压缩调用和一个高级调用,该调用还将图片缩小到其可见尺寸。

from 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")
Python

压缩参数意味着什么?

CompressImages接受两个参数:

  • 质量(必需):1到100之间的整数。100的值保留原始图像质量,不会应用压缩。 40到80之间的值覆盖大多数实用使用案例,60是一般用途文档的常见起点。
  • 按可见尺寸缩放(可选): 默认值为False的布尔值。 当True时,每个图像都会重新采样以匹配其在页面上的呈现尺寸。 这会在质量压缩的基础上增加第二次缩减,通过产生更小的文件来实现。 请注意,之后缩放或以更高DPI打印的页面可能会出现失真。

保存后,可在任何PDF查看器中将压缩后的文件与原件进行比较,以确认质量符合您的要求。 有关更多模式示例,请参阅PDF压缩示例页面。

压缩前的 PDF 是什么样子?

在Microsoft Edge浏览器中打开的PDF文件,显示在应用IronPDF Python压缩前的文件大小为458KB

压缩后的 PDF 如何显示?

在Windows资源管理器中显示压缩后的PDF文件条目,文件大小为357KB,使用IronPDF CompressImages在质量60下从458KB减少了22%

比较显示使用质量60从458 KB减少到357 KB(大约22%)。含较多摄影内容的文件通常比以文本或矢量图形为主的文件减小得更多。

如何对多个PDF文件应用批处理压缩?

处理一个PDF文件夹遵循相同的API:遍历每个CompressImages,并保存结果。 下面的函数将此模式封装成可重用的工具。

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}")
Python

except块会阻止单个损坏或有密码保护的文件停止整个批处理。 将文件名与异常消息一起记录可以更容易地识别哪些文件需要人工审核。 对于高产量流水线,考虑将文件夹拆分成块,并在并行线程中处理。

提示: 对于混合摄影图像和技术图的文件,运行两次:对照片质量50,对图表重页质量85。 使用合并PDFs API进行提取和重新合并,以保持每个部分的最佳质量水平。

PDF压缩应该使用哪些质量设置?

正确的质量设置取决于PDF在压缩后将如何使用。 三个范围涵盖最常见场景。

高质量(70-90):旨在打印或正式分发的文件受益于保持在此范围内。 文本保持清晰,图表在标准打印分辨率下可读。 文件大小缩减通常为10-25%,但对于大多数读者来说,输出与来源没有区别。

中等质量(50-70):适合网页传输和电子邮件附件。 摄影视内容在仔细检查时略显柔和,但文件大小的缩减(通常为25-50%)显著提高了加载时间和电子邮件的可交付性。 大多数文档管理系统和门户上传在质量60时效果良好。

强力压缩(30-50):内部档案、长期存储备份和不会打印的文件可以使用此范围。 在质量40时,图像明显较柔和,但由PDF引擎渲染的文本(而非嵌入为图像的文本)仍然完全清晰。这种方法也适用于将被转换为图像并在显示前缩放的文件。

重要: 始终保留原始未压缩文件的可访问性。 图像的压缩会导致损失; 从压缩的PDF中无法恢复原始图像数据。

如何在Python中验证压缩结果?

通过编程方式检查输出文件大小之前,确认压缩达到了你的目标,然后文件进入管道的下一步。Python的内置os.path.getsize可以返回任何文件路径的字节数,因此验证不需要额外的库。

import 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}%")
Python

输出提供了一个可以记录或与阈值比较的清晰减小比例。 如果减少比例低于预期,该文档可能几乎没有嵌入图像或没有嵌入图像。 在这种情况下,不管质量设置如何,文件大小将基本保持不变,因为CompressImages仅针对栅格图像。 此方法不影响文本和矢量图形。

请注意: IronPDF的压缩针对PDF中的栅格图像使用JPEG编码。 JPEG压缩标准定义了质量到大小的权衡,质量参数控制着这种权衡。 较低的值会应用更强的JPEG量化,减少文件大小和图像细节。

Python中的PDF压缩下一步是什么?

IronPDF的CompressImages方法为Python开发者提供了一个单一、明确作用域的API来减少PDF文件的大小。 调整质量参数以在存储节省与视觉保真度之间取得平衡,并添加分辨率缩减布尔值,以便在输出尺寸固定时进行第二次缩减。 想全面了解IronPDF的处理能力,请查看Python PDF库概述页面。

开始您的免费试用,同时测试IronPDF的全功能套件,包括HTML到PDF转换、数字签名、表单处理和文档合并。 试用期结束时,查看许可选项以找到适合您部署的计划。

准备看看IronPDF还能做些什么吗? 探索完整的Python PDF教程,了解IronPDF的核心功能。

常见问题解答

我如何安装IronPDF以在Python中压缩PDF文件?

在终端中运行 pip install ironpdf。IronPDF for Python需要先安装.NET 6.0 SDK。安装后,从ironpdf包中导入PdfDocument以开始压缩PDF。

在Python中压缩PDF文件的基本代码是什么?

使用PdfDocument("your-file.pdf")加载文件,调用CompressImages(60),其中质量整数从1到100,然后使用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%,同时保持照片内容的视觉可接受性以便在屏幕上阅读。

How can you verify the effectiveness of PDF compression in Python?

You can verify PDF compression effectiveness by comparing file sizes before and after compression. Use Python's os.path.getsize function to check the byte count of both versions and calculate the reduction percentage.

Why should you keep the original uncompressed PDF file accessible?

The original uncompressed PDF should be kept accessible because compression is lossy for images; you cannot recover the original image data from the compressed file. This ensures you have access to higher quality files if needed.

What are the next steps after using CompressImages for PDF compression?

After compressing PDFs with CompressImages, you can explore other IronPDF features such as HTML to PDF conversion, digital signatures, form handling, and document merging. A free trial allows you to test the full feature set before choosing a licensing option.

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

...
阅读更多

准备开始了吗?

版本:2026.9刚刚发布

免费获取

30天试用密钥 即刻获取。

bullet_checked无需信用卡或创建账户
bullet_test在生产环境中测试
且无水印
bullet_calendar30天完全
功能性产品
bullet_support试用期间提供
24/5技术支持
立即获取您的免费30 天试用密钥。
无需信用卡或创建账户
Python 模块下载 PDF
using pip 安装

版本: 2026.9

  1. 下载 并安装 Python 3.7+。
  2. 如果尚未安装,请从 pypi.org 安装 pip。
  3. 在终端中执行上述命令。
Python PDF 模块
下载 模块

版本: 2026.9

手动安装到您的项目中

  1. 下载软件包
  2. 在终端中运行此命令
    pip install ironpdf-2026.9-py37-none-win_amd64.whi

$999 起

Key in blue circle

立即获取免费的 30 天试用版密钥。

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

OR
bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥。
无需信用卡或创建账户
Python 模块下载 PDF
using pip 安装

版本: 2026.9

  1. 下载 并安装 Python 3.7+。
  2. 如果尚未安装,请从 pypi.org 安装 pip。
  3. 在终端中执行上述命令。
Python PDF 模块
下载 模块

版本: 2026.9

手动安装到您的项目中

  1. 下载软件包
  2. 在终端中运行此命令
    pip install ironpdf-2026.9-py37-none-win_amd64.whi

$999 起