压缩 PDF 文件大小(3 大实用的 Python 库) - E

news/2025/10/17 10:51:56/文章来源:https://www.cnblogs.com/Yesi/p/19147254

在日常工作中,压缩 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 文件大小。

实现步骤如下:

  1. 创建 PdfCompressor 对象。
  2. 通过 PdfCompressor.OptimizationOptions 属性获取压缩设置对象。
  3. 使用 SetImageQuality() 方法设置图片质量。
  4. 通过 SetResizeImages() 方法启用图片大小调整。
  5. SetIsCompressImage() 设置为 True,执行压缩操作。
  6. 将压缩后的文件另存为新的 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 压缩前后效果对比
使用 Spire.PDF 设置图片质量以压缩 PDF

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

如果在压缩图片后,PDF 文件仍然较大,可以通过优化字体进一步减小体积。
在创建 PDF 时,使用多种字体往往会显著增加文件大小。若需保留高清图片,可优先选择优化字体这一方法。

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

实现步骤如下:

  1. 创建 PdfCompressor 实例并加载文档。
  2. 访问压缩选项对象。
  3. 启用字体压缩或取消字体嵌入。
  4. 执行压缩并保存新的 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 压缩前后展示

使用 Spire.PDF 压缩字体

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

第二个要介绍的库是 Aspose.PDF
它是一款无需依赖 MS Office 或 Adobe Acrobat 的 PDF 处理库,支持读取、编辑、生成、转换以及压缩 PDF 文档。
安装方式如下:

pip install aspose-pdf

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

实现步骤如下:

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

下面是移除字体嵌入以压缩 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 压缩前后效果展示
使用 Aspose 压缩 PDF 文件的大小

PyPDF2:快速压缩 PDF 文件

第三个要介绍的库是 PyPDF2
它是一个轻量级的开源库,提供 PDF 的读取、合并、拆分与基本压缩功能。
安装方式如下:

pip install PyPDF2

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

pip install --user PyPDF2

实现步骤如下:

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

示例代码如下:

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 压缩前后效果展示
使用 Aspose 压缩 PDF 文件的大小

总结

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/938742.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 年搅拌器厂家最新推荐榜:聚焦国内优质厂商,精选实力品牌助力企业采购决策侧入式/立式/脱硫/桨式/水处理搅拌器厂家推荐

在化工、食品、冶金等众多行业的生产环节中,搅拌器作为核心设备,其性能优劣直接关系到生产效率提升与产品质量稳定。当前国内搅拌器市场厂商数量繁杂,部分企业存在技术落后、材料劣质等问题,导致产品故障频发,不仅…

告别客服焦虑!用 PandaWiki 打造永不下班的 AI 在线客服

告别客服焦虑!用 PandaWiki 打造永不下班的 AI 在线客服在当今竞争激烈的商业环境中,客户服务已经成为企业核心竞争力的重要组成部分。然而,传统的人工客服模式正面临着前所未有的挑战:高昂的人力成本、不稳定的响…

2025年轴承厂家权威推荐榜单:电机轴承,单向轴承,含油轴承,自润滑轴承源头厂家综合实力与创新技术全景解析

2025年轴承厂家权威推荐榜单:电机轴承,单向轴承,含油轴承,自润滑轴承源头厂家综合实力与创新技术全景解析随着工业4.0时代的深入发展,轴承作为机械装备的核心基础零部件,其性能和质量直接影响设备的运行效率和使…

请输入标题

“不会真的有人把密码藏到 html 里吧。” “你看他们像烟花一样绽放开来。” “我不懂你的意思。” “这种文章有什么意义。”

2025 年修补剂厂家最新推荐排行榜:金属 / 陶瓷 / 橡胶等多材质适配品牌深度解析,助力企业精准选型

在工业制造与设备维修领域,修补剂的性能直接关系到设备寿命、生产效率与运营安全。当前市场却面临多重选购困境:部分品牌产品体系单一,难以适配汽车、航空航天、矿山油田等多元场景;部分厂商技术滞后,产品在耐高温…

2025 工业电子胶粘剂厂家最新推荐榜单发布:国产实力品牌深度解析,选购指南全攻略高端工业/进口国产工业/工业电子胶粘剂胶水厂家推荐

随着 5G 通信、新能源汽车、半导体等产业的爆发式增长,工业电子胶粘剂作为核心配套材料,其性能直接决定终端产品的可靠性与使用寿命。但当前市场仍存在显著痛点:部分产品环保不达标,无法通过 ROHS、REACH 等国际认…

2、docker入门基本概念 - 实践

2、docker入门基本概念 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco"…

国产项目管理工具Gitee的崛起:数字化转型浪潮下的本土化突围

国产项目管理工具Gitee的崛起:数字化转型浪潮下的本土化突围 在数字化转型加速推进的当下,企业协作效率成为核心竞争力。项目管理工具作为企业数字化基础设施的重要组成部分,正经历着从功能导向到场景适配的深刻变革…

Elasticsearch安装和Kibana安装

1. 逻辑架构(面向用户的数据视图) 这是用户在使用和操作 Elasticsearch 时最常接触到的概念层次,类似于传统数据库中的数据库、表、行。文档是什么: 最基本的数据单元,是一个可被索引的信息单元。格式: 采用 JSO…

2025 试验机厂家最新推荐权威榜单:弹簧 / 环境 / 材料检测设备领军企业深度解析

在制造业高质量发展与 “材料强则装备强” 的战略背景下,试验机作为质量管控核心装备,其技术先进性直接影响产业升级进程。然而当前市场存在显著痛点:部分企业技术储备不足,难以突破高精度、智能化检测瓶颈,且产品…

[note] slope trick

slope trick 是一个优化二维 DP 的技巧。该二维 DP 需要满足以下条件:第二维是连续的;若 DP 的第一维固定时,第二维可以看作一个分段一次函数;这个函数每一段的斜率为整数;这个函数是凸函数(每一段的斜率是单调的…

three自带的框选工具SelectionBox、SelectionHelper

🧱 一、SelectionBox 是什么? SelectionBox 是 Three.js 示例库中的一个工具类(examples/jsm/interactive/SelectionBox.js),用于通过定义一个**三维空间包围盒(Box3)**来选中视野内的物体。 换句话说:它根据…

2025年精密磨床/CNC机械加工厂家推荐榜单:涵盖铣床/车床/磨削/多轴/复合加工,铝/不锈钢/钛合金/模具钢/塑料件定制,汽车/医疗/航空航天/机器人零件及模具工装夹具加工

2025年精密磨床/CNC机械加工厂家推荐榜单:专业采购决策指南行业背景与发展趋势随着制造业向高质量、精密化方向转型升级,精密磨床与CNC机械加工行业正迎来前所未有的发展机遇。在工业4.0和智能制造的大背景下,精密加…

2025 电动缸源头厂家最新推荐榜:剖析国产厂商成本优势与技术实力,附权威选购指南

在工业 4.0 深化推进的背景下,电动缸作为自动化生产的核心动力部件,需求持续攀升,但市场乱象却让采购决策陷入困境。部分厂家依赖外购核心部件导致兼容性差、故障率高,甚至通过减配原材料缩短产品寿命,而近年新兴…

Claude Haiku 4.5新功能、模型与定价,免费试用国内直连教程

Claude Haiku 4.5新功能、模型与定价,免费试用国内直连教程Claude 4.5 的新功能了解 Claude 4.5 中引入的新功能和改进,包括 Sonnet 4.5 和 Haiku 4.5 模型。Claude 4.5 引入了两个针对不同用例设计的模型:Claude S…

网络编程实践笔记_4_阿贝云_免费云服务器_简易博客_

简易博客 AI搜索 python后台有了简单方便的服务器,(在我的理解下还是个电脑主机,只不过连着网,实际就像个内网的AGV小车,可以ssh到他而已), ssh远程控制和scp远程传输文件之后,就可以准备代码了, 没做过网页编…

10 17

4.4终于把这道题调出来了啊/ll,不容易啊/ll 首先我写错的最大的点是 \(sum_x\) 把它也异或了 \(siz_x\) 次 其次是 op = 1 的 soltwo 的时候没有判 \(x = y\) 的情况 然后是 \(soltwo(x,y)\) \(x\) 往上的时候没有让…

深入解析:日语学习-日语知识点小记-进阶-JLPT-N1阶段应用练习(2):语法 +考え方15+2022年7月N1

深入解析:日语学习-日语知识点小记-进阶-JLPT-N1阶段应用练习(2):语法 +考え方15+2022年7月N12025-10-17 10:35 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: norma…

2025年铝单板厂家推荐排行榜,氟碳铝单板,木纹铝单板,冲孔铝单板,外墙铝单板,雕花铝单板,异形铝单板,双曲铝单板公司推荐!

2025年铝单板厂家推荐排行榜,氟碳铝单板,木纹铝单板,冲孔铝单板,外墙铝单板,雕花铝单板,异形铝单板,双曲铝单板公司推荐!行业背景与发展趋势铝单板作为现代建筑装饰材料的重要组成部分,近年来在建筑外立面、室…

2025 年最新推荐热熔胶源头厂家榜:覆盖书刊装订 / 包装等场景,助企业选高性价比产品

当前热熔胶应用广泛,却面临产品质量参差不齐、技术适配性不足、服务响应滞后等问题,下游企业在选购时常陷入困境,难以找到契合自身需求的高性价比源头厂家。为解决这一难题,帮助印刷、包装、鞋材等行业企业精准筛选…