欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > python:PyPDF2 将多个图片转换为pdf,再合并成一个PDF文件

python:PyPDF2 将多个图片转换为pdf,再合并成一个PDF文件

2024/10/25 12:29:06 来源:https://blog.csdn.net/belldeep/article/details/142710795  浏览:    关键词:python:PyPDF2 将多个图片转换为pdf,再合并成一个PDF文件

承上一篇:java:pdfbox 3.0 去除扫描版PDF中文本水印

# 导出扫描版PDF文件中每页的图片文件

java -jar pdfbox-app-3.0.3.jar export:images -prefix=test -i your_book.pdf
导出
Writing image: test-1.jpg
Writing image: test-2.jpg
Writing image: test-3.png
……
pip install Pillow
pip install pypdf2
  pypdf2-3.0.1-py3-none-any.whl (232 kB)

#  将多个图片转换为pdf,再合并成一个PDF文件

编写 merge_pdf2.py  如下

# -*- coding: utf-8 -*-
""" PyPDF2 将多个图片转换为pdf,再合并成一个PDF文件 """
import os
import re
from PIL import Image
from PyPDF2 import PdfMergerimages_dir = "." # imgs
tmpdir = r"\tmp" # Win 10def revise(s):""" 修正图片文件名中的数字,假设0<页数<=999 """prefix = s[0:5]d = s.split('-')[1].split('.')[0]ext = '.pdf'# 数字前补零if len(d) ==1:d = '00'+delif len(d) ==2:d = '0' +delse:passreturn prefix + d + extdef trans_jpg2pdf(jpg_list: list) -> list:"""jpg图片转换成 pdfArgs:jpg_list (list): 图片文件列表Returns:list: 图片转换后的 pdf文件列表"""pdf_list = []for jpg in jpg_list:jpg_path = os.path.join(images_dir, jpg)pdf_file = revise(jpg) # 修正后的pdf文件名pdf_path = os.path.join(tmpdir, pdf_file)if os.path.exists(pdf_path):os.remove(pdf_path)pdf_list.append(pdf_path)im = Image.open(jpg_path)im.save(pdf_path, 'PDF', resolution=100.0)return pdf_listdef merge_pdf(pdf_list: list, result_pdf: str = "result.pdf"):""" 合并 pdf文件Args:pdf_list (list): pdf文件列表result_pdf (str): 合并后的 pdf文件名称"""sorted_list = sorted(pdf_list)f_merger = PdfMerger()for pdf in sorted_list:print(pdf)f_merger.append(pdf)if os.path.exists(result_pdf):os.remove(result_pdf)f_merger.write(result_pdf)if __name__ == '__main__':jpg_list = [f for f in os.listdir(images_dir) if f.endswith(".jpg") or f.endswith(".png")]pdf_list = trans_jpg2pdf(jpg_list)merge_pdf(pdf_list, "result.pdf")

运行 python merge_pdf2.py 
生成 result.pdf ,打开 result.pdf 看不见“文本水印”了。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com