python PDF转存及压缩功能需求,有偿

我是一位设计师,平时工作中需要大量的pdf的转存的工作,工作流程为:

  1. 将N个pdf合并成一个pdf,(N一般大于100页,体量庞大,单个文件为设计内容,合并为一个汇报文件)
  2. 将合并pdf另存为JPG,(设计付费及版权原因,原有pdf为矢量内容需要转为图片格式)
  3. 将JPG合成为一个pdf,并且压缩降低文件尺寸(重新组合为一个汇报文件,并且压缩到合适与发送的大小)

这个事虽然简单,但面临每次几百页的pdf,合并压缩时间缓慢,中间还需关注,执行各个操作步骤,效率低下,

我只是刚接触python,需要能实现输入一个文件地址,就会将内部pdf按照顺序合并,另存jpg,再合并并压缩的功能

希望有能帮我实现这个功能的python代码,并且有比较详细的库的安装方式,感谢!

后续可以远程帮组调试,该项目是我之前自动化下载百度经验所用
下有代码,可直接复制使用。如有帮助,敬请采纳,你的采纳是我前进的动力,O(∩_∩)O谢谢!!!!!!!!
路过的朋友也可以点个赞~(≧▽≦)/~
安装依赖包

pip3 install PyMuPDF==1.19.6
pip3 install reportlab==3.6.8
pip3 install pillow==9.0.1

PDF文件的压缩非常常用,python的PyMuPDF包可以对PDF文件进行灵活的自定义压缩。

  1. 原理
    PDF切分为图片,根据压缩率zoom压缩图片后保存本地;图片合成PDF
  2. 依赖
    PyMuPDF包

pip install PyMuPDF
3. 代码

import fitz
import os
def covert2pic(zoom):
if os.path.exists('.pdf'): # 临时文件,需为空
os.removedirs('.pdf')
os.mkdir('.pdf')
for pg in range(totaling):
page = doc[pg]
zoom = int(zoom) #值越大,分辨率越高,文件越清晰
rotate = int(0)
print(page)
trans = fitz.Matrix(zoom / 100.0, zoom / 100.0).preRotate(rotate)
pm = page.getPixmap(matrix=trans, alpha=False)

    lurl='.pdf/%s.jpg' % str(pg+1)
    pm.writePNG(lurl)
doc.close()

def pic2pdf(obj):
doc = fitz.open()
for pg in range(totaling):
img = '.pdf/%s.jpg' % str(pg+1)
imgdoc = fitz.open(img) # 打开图片
pdfbytes = imgdoc.convertToPDF() # 使用图片创建单页的 PDF
os.remove(img)
imgpdf = fitz.open("pdf", pdfbytes)
doc.insertPDF(imgpdf) # 将当前页插入文档
if os.path.exists(obj): # 若文件存在先删除
os.remove(obj)
doc.save(obj) # 保存pdf文件
doc.close()

def pdfz(sor, obj, zoom):
covert2pic(zoom)
pic2pdf(obj)

if name == "main":

sor = "source.pdf"              # 需要压缩的PDF文件
obj = "new" + sor
doc = fitz.open(sor) 
totaling = doc.pageCount

zoom = 200                     # 清晰度调节,缩放比率
pdfz(sor, obj, zoom)
os.removedirs('.pdf')
  1. 使用
    脚本和要压缩的PDF需在同一路径下
    sor变量为需要压缩的文件
    zoom用于调整压缩率
    压缩后使用PDF打印功能导出能够进一步压缩

PDF文件转换为图片https://blog.51cto.com/u_15435490/4633477
压缩:https://blog.csdn.net/qq_41280654/article/details/117770187

https://blog.csdn.net/weixin_43570328/article/details/12025058

https://cloud.tencent.com/developer/article/1481641

https://ask.csdn.net/questions/7762156?spm=1005.2026.3001.5635&utm_medium=distribute.pc_relevant_ask_down.none-task-ask-2~default~OPENSEARCH~Rate-1-7762156-ask-7762156.pc_feed_download_top3ask&depth_1-utm_source=distribute.pc_relevant_ask_down.none-task-ask-2~default~OPENSEARCH~Rate-1-7762156-ask-7762156.pc_feed_download_top3ask