# 该代码用于pdf文档合成
import PyPDF2,os
import os
import sys
import fitz
from reportlab.lib.pagesizes import portrait
from reportlab.pdfgen import canvas
from PIL import Image
def pdf2img(img_file,filename):
file_name = filename.split('.pdf')
# 打开PDF文件,生成一个对象
doc = fitz.open(filename)
print("共",doc.pageCount,"页")
for pg in range(doc.pageCount):
print("\r转换为图片",pg+1,"/",doc.pageCount,end="")
page = doc[pg]
rotate = int(0)
# 每个尺寸的缩放系数为8,这将为我们生成分辨率提高64倍的图像。一般设为2
zoom_x = 8.0
zoom_y = 8.0
trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
pm = page.getPixmap(matrix=trans, alpha=False)
pm.writePNG(img_file+'/'+filename+'_tu'+'{:02}.png' .format(pg))
print()
def combine_imgs_pdf(folder_path, pdf_file_path):
files = os.listdir(folder_path)
png_files = []
sources = []
for file in files:
if 'png' in file or 'jpg' in file:
png_files.append(folder_path +'/' +file)
png_files.sort()
output = Image.open(png_files[0])
png_files.pop(0)
for file in png_files:
png_file = Image.open(file)
if png_file.mode == "RGB":
png_file = png_file.convert("RGB")
sources.append(png_file)
output.save(pdf_file_path, "pdf", save_all=True, append_images=sources)
if __name__ == '__main__':
# filename='0.pdf'
#
final = 'master'
path = os.path.dirname(os.path.abspath(__file__))
print(path)
img_file = path+'\image'
if os.path.exists(img_file):
print('文件夹存在')
else:
os.mkdir(img_file)
# target_path = os.path.dirname(path)
target_path = path
pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]
for filename in pdf_lst:
pdf2img(img_file,filename)
folder = img_file
pdfFile = path+'/'+final+".pdf"
combine_imgs_pdf(folder, pdfFile)
多PDF文件合并
最新推荐文章于 2023-12-11 16:04:58 发布