Python高效实现PDF文件压缩的三大库使用指南

 更新时间:2025年10月21日 08:42:12   作者:E-iceblue  
在日常工作中,压缩 PDF 文件是一项非常常见的任务,为了帮助你更轻松地完成这项任务,本文将介绍 三个最实用的 Python 库,让你能够批量、快速地压缩 PDF 文件,快跟随小编一起学习一下吧

在日常工作中,压缩 PDF 文件是一项非常常见的任务。无论是为了节省存储空间,还是为了更快地上传、共享文件,控制 PDF 的体积都至关重要。
例如,美国部分电子诉讼系统要求上传的 PDF 文件必须小于 35 MB,而在医疗行业中,电子病历通常被压缩至 10 MB - 20 MB,以便更高效地传输和存储。

为了帮助你更轻松地完成这项任务,本文将介绍 三个最实用的 Python 库,让你能够批量、快速地压缩 PDF 文件

Spire.PDF for Python:高效压缩 PDF 文件

第一个要介绍的工具是 Spire.PDF for Python

这是一个功能强大且高效的 PDF 处理库,支持在 Python 中执行包括创建、编辑、转换、以及压缩在内的各种操作。

由于其 API 简洁易懂,无论是初学者还是有经验的开发者,都能轻松使用 Spire.PDF 来压缩 PDF 文件。

你可以通过以下命令从 PyPI 安装该库:

pip install Spire.Pdf

压缩图片:减小 PDF 文件体积的常用方法

PDF 文件体积过大的主要原因通常是高分辨率图片、嵌入字体或批注等元素。
本节将重点介绍如何通过压缩和调整图片的方式来减小 PDF 文件大小。

实现步骤如下:

  • 创建 PdfCompressor 对象。
  • 通过 PdfCompressor.OptimizationOptions 属性获取压缩设置对象。
  • 使用 SetImageQuality() 方法设置图片质量。
  • 通过 SetResizeImages() 方法启用图片大小调整。
  • SetIsCompressImage() 设置为 True,执行压缩操作。
  • 将压缩后的文件另存为新的 PDF。

下面是示例代码,通过将图片质量设置为中等来压缩 PDF 文件:

from spire.pdf import *
from spire.pdf.common import *

# 创建 PdfCompressor 对象
compressor = PdfCompressor("E:/Administrator/Python1/input/AI绘画的利与弊-图片版.pdf")

# 获取压缩选项对象
compression_options = compressor.OptimizationOptions

# 设置图片质量为中等
compression_options.SetImageQuality(ImageQuality.Medium)
# 启用图片大小调整
compression_options.SetResizeImages(True)
# 启用图片压缩
compression_options.SetIsCompressImage(True)

# 压缩 PDF 文件并保存结果
compressor.CompressToFile("E:/Administrator/Python1/output/Spire压缩_图片.pdf")

Spire.PDF 压缩前后效果对比

优化字体:进一步减小文件体积

如果在压缩图片后,PDF 文件仍然较大,可以通过优化字体进一步减小体积。

在创建 PDF 时,使用多种字体往往会显著增加文件大小。若需保留高清图片,可优先选择优化字体这一方法。

Spire.PDF 提供了 OptimizationOptions.SetIsCompressFonts()OptimizationOptions.SetIsUnembedFonts() 方法,用于控制字体的压缩与取消嵌入。

实现步骤如下:

  • 创建 PdfCompressor 实例并加载文档。
  • 访问压缩选项对象。
  • 启用字体压缩或取消字体嵌入。
  • 执行压缩并保存新的 PDF 文件。

下面是通过优化字体压缩 PDF 文件的示例代码:

from spire.pdf import *
from spire.pdf.common import *

# 创建 PdfCompressor 对象
compressor = PdfCompressor("E:/Administrator/Python1/input/AI绘画的利与弊-图片版.pdf")

# 获取压缩选项对象
compression_options = compressor.OptimizationOptions
# 启用字体压缩
compression_options.SetIsCompressFonts(True)
# 或取消字体嵌入
# compression_options.SetIsUnembedFonts(True)

# 压缩 PDF 文件并保存结果
compressor.CompressToFile("E:/Administrator/Python1/output/Spire压缩_字体.pdf")

Spire.PDF 压缩前后展示

Aspose.PDF:通过优化字体实现 PDF 压缩

第二个要介绍的库是 Aspose.PDF

它是一款无需依赖 MS Office 或 Adobe Acrobat 的 PDF 处理库,支持读取、编辑、生成、转换以及压缩 PDF 文档。

安装方式如下:

pip install aspose-pdf

在测试中发现,虽然 Aspose 提供了直接的图片压缩和优化接口,但结果有时并不理想,甚至会使文件变大。
因此,更有效的方式是通过 移除嵌入字体(Unembed Fonts) 来实现 PDF 文件压缩。

实现步骤如下:

  • 导入所需模块。
  • 打开要压缩的 PDF 文档。
  • 创建 OptimizationOptions 对象并启用 unembed_fonts 选项。
  • 执行优化并保存压缩后的文件。
  • 对比压缩前后的文件大小。

下面是移除字体嵌入以压缩 PDF 的示例代码:

import aspose.pdf as ap
import os

# 打开 PDF 文件
document = ap.Document("E:/Administrator/Python1/input/AI绘画的利与弊-图片版.pdf")

# 设置字体取消嵌入选项
optimizeOptions = ap.optimization.OptimizationOptions()
optimizeOptions.unembed_fonts = True

# 执行优化操作
document.optimize_resources(optimizeOptions)

# 保存优化后的文件
document.save("E:/Administrator/Python1/output/Aspose压缩.pdf")

# 比较压缩前后文件大小
file_stats_1 = os.stat("E:/Administrator/Python1/input/AI绘画的利与弊-图片版.pdf")
file_stats_2 = os.stat("E:/Administrator/Python1/output/Aspose压缩.pdf")
print(
    "文件原始大小: {}. 压缩后文件的大小: {}".format(
        file_stats_1.st_size, file_stats_2.st_size
    )
)

Aspose.PDF 压缩前后效果展示

PyPDF2:快速压缩 PDF 文件

第三个要介绍的库是 PyPDF2

它是一个轻量级的开源库,提供 PDF 的读取、合并、拆分与基本压缩功能。

安装方式如下:

pip install PyPDF2

如果你没有系统管理员权限,也可以为当前用户单独安装:

pip install --user PyPDF2

实现步骤如下:

  • 导入所需模块。
  • 创建 PdfReader 对象并读取 PDF 文件。
  • 创建 PdfWriter 对象。
  • 遍历 PDF 中的每一页。
  • 调用 page.compress_content_streams() 方法压缩页面内容。
  • 将压缩后的页面写入新文件。

示例代码如下:

from PyPDF2 import PdfReader, PdfWriter

# 读取原始 PDF 文件
reader = PdfReader("E:/Administrator/Python1/input/AI绘画的利与弊-图片版.pdf")

# 创建写入对象
writer = PdfWriter()

# 遍历每一页进行压缩
for page in reader.pages:
    # 压缩页面内容(此过程可能较耗 CPU)
    page.compress_content_streams()
    writer.add_page(page)

# 保存压缩后的文件
output_file = "E:/Administrator/Python1/output/PyPDF2压缩.pdf"
with open(output_file, "wb") as f:
    writer.write(f)

PyPDF2 压缩前后效果展示

总结

本文介绍了三款常用的 Python PDF 压缩库:

  • Spire.PDF:支持图片和字体双重压缩,效果显著,适合批量处理。
  • Aspose.PDF:可高度自定义压缩策略,适合企业级文档优化。
  • PyPDF2:轻量级开源方案,适合进行基础压缩操作。

通过灵活使用这些库,你可以轻松实现 PDF 文件体积的显著缩减,让文件在保持清晰度的同时更易于存储与分享。

到此这篇关于Python高效实现PDF文件压缩的三大库使用指南的文章就介绍到这了,更多相关Python PDF文件压缩内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中static相关知识小结

    Python中static相关知识小结

    static用法:是一个修饰符,用于修饰成员(成员变量,成员函数).当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用,格式——类名.静态成员。
    2018-01-01
  • python之PyAutoGui教你做个自动脚本计算器的方法

    python之PyAutoGui教你做个自动脚本计算器的方法

    这篇文章主要介绍了python之PyAutoGui教你做个自动脚本计算器的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Python基于template实现字符串替换

    Python基于template实现字符串替换

    这篇文章主要介绍了Python基于template实现字符串替换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • 解决Python3 被PHP程序调用执行返回乱码的问题

    解决Python3 被PHP程序调用执行返回乱码的问题

    今天小编就为大家分享一篇解决Python3 被PHP程序调用执行返回乱码的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • python多线程socket编程之多客户端接入

    python多线程socket编程之多客户端接入

    这篇文章主要为大家详细介绍了python多线程socket编程之多客户端接入,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • 关于Pandas count()与values_count()的用法及区别

    关于Pandas count()与values_count()的用法及区别

    这篇文章主要介绍了关于Pandas count()与values_count()的用法及区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • python可视化数据分析pyecharts初步尝试

    python可视化数据分析pyecharts初步尝试

    这篇文章主要为大家介绍了python可视化数据分析pyecharts初步尝试,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • Python 实现PS滤镜的旋涡特效

    Python 实现PS滤镜的旋涡特效

    这篇文章主要介绍了Python 实现 PS 滤镜的旋涡特效,帮助大家更好的利用python处理图片,感兴趣的朋友可以了解下
    2020-12-12
  • Python 列表(List)的底层实现原理分析

    Python 列表(List)的底层实现原理分析

    这篇文章主要介绍了Python 列表(List)的底层实现原理分析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • python basicConfig()简介及用法举例

    python basicConfig()简介及用法举例

    logging.basicConfig() 是 Python logging 模块中最常用的配置函数,用于一次性设置日志系统的基本参数(如日志级别、输出格式、输出位置等),本文给大家介绍python basicConfig()简介及用法举例,感兴趣的朋友一起看看吧
    2025-08-08

最新评论