3 大 Python 库助力高效 PDF 文件压缩 - E

news/2025/10/20 16:31:49/文章来源: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/941332.shtml

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

相关文章

三麦克风阵列近场定位MATLAB实现(TDOA+GCC方法)

一、系统架构设计 1. 硬件配置参数 % 麦克风阵列参数 c = 343; % 声速(m/s) fs = 48000; % 采样率(Hz) mic_pos = [0,0; 0.1,0; 0.1,0.05](@ref); % 三麦克风坐标(x,y)2. 信号流图 声源 → 麦克风1 → 预处…

Servlet的几种用法? - 教程

Servlet的几种用法? - 教程2025-10-20 16:27 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important;…

2025年UV固化设备厂家推荐排行榜,UV面光源,UV LED点光源,UV LED面光源,UV LED固化机专业选购指南

2025年UV固化设备厂家推荐排行榜,UV面光源,UV LED点光源,UV LED面光源,UV LED固化机专业选购指南 随着工业4.0时代的深入发展,UV固化技术作为现代制造业的关键环节,正经历着从传统汞灯向LED技术的革命性转变。UV…

stm32和Zynq的中断抢占机制 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025 年食品级润滑油脂厂家最新推荐榜单:聚焦纳米材料技术突破,甄选核心竞争力突出的企业

引言 在食品、制药、饮料等与民生健康紧密相关的行业中,食品级润滑油脂作为生产设备的 “血液”,其安全性、稳定性与适配性直接决定产品质量安全与生产效率。当前市场存在诸多痛点:部分产品难以平衡极端工况适应性与…

2025 年食品级润滑油源头厂家最新推荐排行榜:聚焦国产标杆企业,54 项专利加持,助力企业精准选品食品级润滑油液压油/食品级润滑油齿轮油/食品级润滑油烘焙设备润滑油厂家推荐

引言 当前食品、制药、饮料等行业高速发展,食品级润滑油作为保障设备稳定运转、守护食品安全的关键产品,其品质与供应稳定性直接影响企业生产效率与产品安全。然而,市场上存在国外品牌垄断推高采购成本、部分小型厂…

2025年精密弹簧厂家权威推荐榜:压缩弹簧、拉伸弹簧、异形弹簧专业制造商实力解析与选购指南

2025年精密弹簧厂家权威推荐榜:压缩弹簧、拉伸弹簧、异形弹簧专业制造商实力解析与选购指南 在现代工业制造体系中,精密弹簧作为基础却关键的机械元件,其性能质量直接影响着整个设备系统的可靠性与精度。随着高端装…

七大排序算法的基本原理 - 教程

七大排序算法的基本原理 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&quo…

牛客刷题-Day15

优先队列、并查集 https://ac.nowcoder.com/acm/contest/22904?from=acdiscuss牛客刷题-Day15 今日刷题:\(1011-1015\) 1011 小A与任务 题目描述 小A手头有 \(n\) 份任务,他可以以任意顺序完成这些任务,只有完成当…

2025年青海视频号运营服务商权威推荐榜:专业内容策划与精准流量投放口碑之选

2025年青海视频号运营服务商权威推荐榜:专业内容策划与精准流量投放口碑之选 在数字经济蓬勃发展的今天,视频号作为内容传播与商业转化的重要阵地,已成为企业品牌建设与营销推广的核心渠道。青海地区依托独特的文化…

数据结构学习(1)——指针、结构体、链表(C语言) - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

LVDS硬件知识 - 指南

LVDS硬件知识 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "…

task 1 improved

task 1 improved#include <stdio.h> #include <stdlib.h> #include <time.h>#define N 5 #define N1 80 #define N2 35 int main(){int cnt;int r;//random_major,random_no;srand(time(NULL)); //n…

rhel v7 v8 local repository setting

---------v7----------- echo -e "[RHEL7-ELS]" > /etc/yum.repos.d/web.repo echo -e "name=RHEL7-ELS" >> /etc/yum.repos.d/web.repo echo -e "enabled=1" >> /etc/y…

2025 年仿石漆厂家最新推荐榜,技术实力与市场口碑深度解析,精选优质企业助力选购水包砂/冠晶石/外墙/多彩/批刮仿石漆厂家推荐

引言 当前仿石漆行业蓬勃发展,但市场品牌繁杂、产品质量良莠不齐,采购方在挑选时常常面临诸多难题。部分产品仿石效果不佳、性能不稳定,甚至存在环保隐患,不仅影响建筑外观与使用寿命,还可能危害环境与人体健康。…

wsl连接 USB 设备

连接 USB 设备2025/06/11本指南将演练使用 USB/IP 开源项目 usbipd-win 将 USB 设备连接到 WSL 2 上运行的 Linux 分发版所需的步骤。 在 Windows 计算机上配置 USB/IP 项目可以实现常见的开发者 USB 场景,例如刷写 A…

完整教程:轻量服务器创建mysql,并配置远程连接

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【完整版】vcruntime140_1.dll缺失?3步快速修复教程(含官方修复工具+系统适配指南)

当你在运行 Photoshop、Premiere、WPS 或游戏时出现“由于找不到 vcruntime140_1.dll,无法继续执行代码”的提示,不要慌。本文详细讲解 vcruntime140_1.dll 文件的作用、缺失原因,并提供三种权威修复方案:微软官方…

linux 学习平台 arm+x86 搭建 - 详解

linux 学习平台 arm+x86 搭建 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monac…

如何系统化掌握 iOS 26 App 耗电管理,多工具协作

本文聚焦 iOS 26 App 耗电管理 /能耗监控 /后台唤醒优化主题,从电量下降速率、资源占用、后台任务、文件 IO/网络访问、版本差异等维度构建监控体系。结合多工具(Xcode Instruments、KeyMob 克魔、APM平台、文件工具…