本帖最后由 zjg121 于 2024-3-25 14:45 编辑
20240325:1.增加一个函数:把pdf文件拆开成图片,放在一个文件夹里。原pdf就不删除了。这个函数和原来的函数正好相反:图片2pdf;pdf2图片。
2.先安装PyMuPDF: pip install pymupdf
[Python] 纯文本查看 复制代码 import fitz # PyMuPDF
import os
def pdf_to_images(pdf_path1):
directory_path = os.path.dirname(pdf_path1)
# 使用os.path.join拼接文件夹路径和新子文件夹名称
output_folder = os.path.join(directory_path, 'PDF分页图片')
# 如果输出文件夹不存在,则创建它
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 打开PDF文件
doc = fitz.open(pdf_path)
# 遍历PDF的每一页
for page_num in range(len(doc)):
page = doc[page_num]
pix = page.get_pixmap()
# 生成图片的文件名
image_filename = os.path.join(output_folder, f'page_{str(page_num + 1).zfill(4)}.png')
# 将图片保存到文件
pix.save(image_filename)
# 关闭PDF文件
doc.close()
print(f'PDF {pdf_path} has been successfully converted to images and saved in {output_folder}')
# 使用示例
pdf_path = 'd:/20240325104126.pdf' # 替换为你的PDF文件路径
pdf_to_images(pdf_path)
制作了一个python函数:把一个文件夹中的所有jpg/jpeg图片合并为一个pdf文件,然后删除这个文件夹。相当于用pdf替换图片文件夹。
先安装pillow和fpdf:pip install pillow fpdf
[Python] 纯文本查看 复制代码 import os
from PIL import Image
from fpdf import FPDF
import shutil
from datetime import datetime
def merge_jpg_to_pdf_and_delete_folder(folder_path):
# 创建一个FPDF对象
pdf = FPDF()
# 遍历文件夹中的所有文件
for filename in os.listdir(folder_path):
if filename.endswith(".jpg") or filename.endswith(".jpeg"):
# 打开图片并获取其尺寸
image_path = os.path.join(folder_path, filename)
with Image.open(image_path) as img:
# 将图片添加到PDF中,这里假设图片尺寸适应PDF页面大小
pdf.add_page()
pdf.image(image_path, 0, 0, 210) # 假设PDF页面大小为A4,即210mm宽
# 获取当前日期和时间
now = datetime.now()
# 格式化日期和时间,例如:2023-04-01_15-30-45.jpg
timestamp = now.strftime("%Y%m%d%H%M%S")
# 创建文件名,假设文件扩展名为.jpg
filename = f"{timestamp}.pdf"
# 使用os.path.dirname来获取父目录
folder_path1 = os.path.dirname(folder_path)
# 拼接文件夹路径和文件名
pdf_path = os.path.join(folder_path1, filename)
# 保存PDF文件,这里假设PDF文件名为merged.pdf,保存在当前目录下
pdf.output(pdf_path, "F")
# 删除文件夹及其内容
shutil.rmtree(folder_path)
print(f"PDF file {pdf_path} created and folder {folder_path} deleted.")
# 使用函数,传入包含JPG图片的文件夹路径
merge_jpg_to_pdf_and_delete_folder("d:/图片")
|