Python高效實(shí)現(xiàn)PDF文件壓縮的三大庫使用指南
在日常工作中,壓縮 PDF 文件是一項(xiàng)非常常見的任務(wù)。無論是為了節(jié)省存儲(chǔ)空間,還是為了更快地上傳、共享文件,控制 PDF 的體積都至關(guān)重要。
例如,美國部分電子訴訟系統(tǒng)要求上傳的 PDF 文件必須小于 35 MB,而在醫(yī)療行業(yè)中,電子病歷通常被壓縮至 10 MB - 20 MB,以便更高效地傳輸和存儲(chǔ)。
為了幫助你更輕松地完成這項(xiàng)任務(wù),本文將介紹 三個(gè)最實(shí)用的 Python 庫,讓你能夠批量、快速地壓縮 PDF 文件。
Spire.PDF for Python:高效壓縮 PDF 文件
第一個(gè)要介紹的工具是 Spire.PDF for Python。
這是一個(gè)功能強(qiáng)大且高效的 PDF 處理庫,支持在 Python 中執(zhí)行包括創(chuàng)建、編輯、轉(zhuǎn)換、以及壓縮在內(nèi)的各種操作。
由于其 API 簡潔易懂,無論是初學(xué)者還是有經(jīng)驗(yàn)的開發(fā)者,都能輕松使用 Spire.PDF 來壓縮 PDF 文件。
你可以通過以下命令從 PyPI 安裝該庫:
pip install Spire.Pdf
壓縮圖片:減小 PDF 文件體積的常用方法
PDF 文件體積過大的主要原因通常是高分辨率圖片、嵌入字體或批注等元素。
本節(jié)將重點(diǎn)介紹如何通過壓縮和調(diào)整圖片的方式來減小 PDF 文件大小。
實(shí)現(xiàn)步驟如下:
- 創(chuàng)建
PdfCompressor對(duì)象。 - 通過
PdfCompressor.OptimizationOptions屬性獲取壓縮設(shè)置對(duì)象。 - 使用
SetImageQuality()方法設(shè)置圖片質(zhì)量。 - 通過
SetResizeImages()方法啟用圖片大小調(diào)整。 - 將
SetIsCompressImage()設(shè)置為True,執(zhí)行壓縮操作。 - 將壓縮后的文件另存為新的 PDF。
下面是示例代碼,通過將圖片質(zhì)量設(shè)置為中等來壓縮 PDF 文件:
from spire.pdf import *
from spire.pdf.common import *
# 創(chuàng)建 PdfCompressor 對(duì)象
compressor = PdfCompressor("E:/Administrator/Python1/input/AI繪畫的利與弊-圖片版.pdf")
# 獲取壓縮選項(xiàng)對(duì)象
compression_options = compressor.OptimizationOptions
# 設(shè)置圖片質(zhì)量為中等
compression_options.SetImageQuality(ImageQuality.Medium)
# 啟用圖片大小調(diào)整
compression_options.SetResizeImages(True)
# 啟用圖片壓縮
compression_options.SetIsCompressImage(True)
# 壓縮 PDF 文件并保存結(jié)果
compressor.CompressToFile("E:/Administrator/Python1/output/Spire壓縮_圖片.pdf")
Spire.PDF 壓縮前后效果對(duì)比

優(yōu)化字體:進(jìn)一步減小文件體積
如果在壓縮圖片后,PDF 文件仍然較大,可以通過優(yōu)化字體進(jìn)一步減小體積。
在創(chuàng)建 PDF 時(shí),使用多種字體往往會(huì)顯著增加文件大小。若需保留高清圖片,可優(yōu)先選擇優(yōu)化字體這一方法。
Spire.PDF 提供了 OptimizationOptions.SetIsCompressFonts() 和 OptimizationOptions.SetIsUnembedFonts() 方法,用于控制字體的壓縮與取消嵌入。
實(shí)現(xiàn)步驟如下:
- 創(chuàng)建
PdfCompressor實(shí)例并加載文檔。 - 訪問壓縮選項(xiàng)對(duì)象。
- 啟用字體壓縮或取消字體嵌入。
- 執(zhí)行壓縮并保存新的 PDF 文件。
下面是通過優(yōu)化字體壓縮 PDF 文件的示例代碼:
from spire.pdf import *
from spire.pdf.common import *
# 創(chuàng)建 PdfCompressor 對(duì)象
compressor = PdfCompressor("E:/Administrator/Python1/input/AI繪畫的利與弊-圖片版.pdf")
# 獲取壓縮選項(xiàng)對(duì)象
compression_options = compressor.OptimizationOptions
# 啟用字體壓縮
compression_options.SetIsCompressFonts(True)
# 或取消字體嵌入
# compression_options.SetIsUnembedFonts(True)
# 壓縮 PDF 文件并保存結(jié)果
compressor.CompressToFile("E:/Administrator/Python1/output/Spire壓縮_字體.pdf")
Spire.PDF 壓縮前后展示

Aspose.PDF:通過優(yōu)化字體實(shí)現(xiàn) PDF 壓縮
第二個(gè)要介紹的庫是 Aspose.PDF。
它是一款無需依賴 MS Office 或 Adobe Acrobat 的 PDF 處理庫,支持讀取、編輯、生成、轉(zhuǎn)換以及壓縮 PDF 文檔。
安裝方式如下:
pip install aspose-pdf
在測(cè)試中發(fā)現(xiàn),雖然 Aspose 提供了直接的圖片壓縮和優(yōu)化接口,但結(jié)果有時(shí)并不理想,甚至?xí)刮募兇蟆?br />因此,更有效的方式是通過 移除嵌入字體(Unembed Fonts) 來實(shí)現(xiàn) PDF 文件壓縮。
實(shí)現(xiàn)步驟如下:
- 導(dǎo)入所需模塊。
- 打開要壓縮的 PDF 文檔。
- 創(chuàng)建
OptimizationOptions對(duì)象并啟用unembed_fonts選項(xiàng)。 - 執(zhí)行優(yōu)化并保存壓縮后的文件。
- 對(duì)比壓縮前后的文件大小。
下面是移除字體嵌入以壓縮 PDF 的示例代碼:
import aspose.pdf as ap
import os
# 打開 PDF 文件
document = ap.Document("E:/Administrator/Python1/input/AI繪畫的利與弊-圖片版.pdf")
# 設(shè)置字體取消嵌入選項(xiàng)
optimizeOptions = ap.optimization.OptimizationOptions()
optimizeOptions.unembed_fonts = True
# 執(zhí)行優(yōu)化操作
document.optimize_resources(optimizeOptions)
# 保存優(yōu)化后的文件
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 文件
第三個(gè)要介紹的庫是 PyPDF2。
它是一個(gè)輕量級(jí)的開源庫,提供 PDF 的讀取、合并、拆分與基本壓縮功能。
安裝方式如下:
pip install PyPDF2
如果你沒有系統(tǒng)管理員權(quán)限,也可以為當(dāng)前用戶單獨(dú)安裝:
pip install --user PyPDF2
實(shí)現(xiàn)步驟如下:
- 導(dǎo)入所需模塊。
- 創(chuàng)建
PdfReader對(duì)象并讀取 PDF 文件。 - 創(chuàng)建
PdfWriter對(duì)象。 - 遍歷 PDF 中的每一頁。
- 調(diào)用
page.compress_content_streams()方法壓縮頁面內(nèi)容。 - 將壓縮后的頁面寫入新文件。
示例代碼如下:
from PyPDF2 import PdfReader, PdfWriter
# 讀取原始 PDF 文件
reader = PdfReader("E:/Administrator/Python1/input/AI繪畫的利與弊-圖片版.pdf")
# 創(chuàng)建寫入對(duì)象
writer = PdfWriter()
# 遍歷每一頁進(jìn)行壓縮
for page in reader.pages:
# 壓縮頁面內(nèi)容(此過程可能較耗 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 壓縮前后效果展示

總結(jié)
本文介紹了三款常用的 Python PDF 壓縮庫:
- Spire.PDF:支持圖片和字體雙重壓縮,效果顯著,適合批量處理。
- Aspose.PDF:可高度自定義壓縮策略,適合企業(yè)級(jí)文檔優(yōu)化。
- PyPDF2:輕量級(jí)開源方案,適合進(jìn)行基礎(chǔ)壓縮操作。
通過靈活使用這些庫,你可以輕松實(shí)現(xiàn) PDF 文件體積的顯著縮減,讓文件在保持清晰度的同時(shí)更易于存儲(chǔ)與分享。
到此這篇關(guān)于Python高效實(shí)現(xiàn)PDF文件壓縮的三大庫使用指南的文章就介紹到這了,更多相關(guān)Python PDF文件壓縮內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中static相關(guān)知識(shí)小結(jié)
static用法:是一個(gè)修飾符,用于修飾成員(成員變量,成員函數(shù)).當(dāng)成員被靜態(tài)修飾后,就多了一個(gè)調(diào)用方式,除了可以被對(duì)象調(diào)用外,還可以直接被類名調(diào)用,格式——類名.靜態(tài)成員。2018-01-01
python之PyAutoGui教你做個(gè)自動(dòng)腳本計(jì)算器的方法
這篇文章主要介紹了python之PyAutoGui教你做個(gè)自動(dòng)腳本計(jì)算器的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
Python基于template實(shí)現(xiàn)字符串替換
這篇文章主要介紹了Python基于template實(shí)現(xiàn)字符串替換,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
解決Python3 被PHP程序調(diào)用執(zhí)行返回亂碼的問題
今天小編就為大家分享一篇解決Python3 被PHP程序調(diào)用執(zhí)行返回亂碼的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-02-02
關(guān)于Pandas?count()與values_count()的用法及區(qū)別
這篇文章主要介紹了關(guān)于Pandas?count()與values_count()的用法及區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
python可視化數(shù)據(jù)分析pyecharts初步嘗試
這篇文章主要為大家介紹了python可視化數(shù)據(jù)分析pyecharts初步嘗試,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04
Python 列表(List)的底層實(shí)現(xiàn)原理分析
這篇文章主要介紹了Python 列表(List)的底層實(shí)現(xiàn)原理分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03

