Python脚本 | 提取pdf页面为jpg
功能:
- 提取pdf文件中的每一页,输出为jpg文件
- 以markdown语法写入文本文件
- 将该文本复制到剪贴板
# python 3.10
# ! 运行在 conda-myv虚拟环境
import fitz # PyMuPDF
from PIL import Image
import os
from datetime import datetime
# 指定PDF文件路径
pdf_path = 'chap6.pdf'
# 指定输出的Markdown文件路径
md_path = 'output.txt'
def NowTime()->str:
# 获取当前时间
now = datetime.now()
# 按照指定的格式输出时间字符串
time_str = now.strftime("%Y-%m-%d-%H-%M-%S")
return time_str
def ShowMessage(message:str)->None:
import ctypes
# 定义提醒信息的内容
# message = "markdown格式内容以复制到剪贴板"
title="提醒"
# 播放提示音
sound = "SystemAsterisk"
ctypes.windll.winmm.PlaySoundW(sound, 0, 0)
# 显示一个消息框
ctypes.windll.user32.MessageBoxW(None, message, title, 0)
# 获取当前文件的路径
current_file_path = os.path.abspath(__file__)
# 获取当前文件所在的目录
output_dir = os.path.dirname(current_file_path)
# 打开PDF文件
pdf_document = fitz.open(pdf_path)
# 创建Markdown文件
with open(md_path, 'w', encoding='utf-8') as md_file:
# 遍历PDF的每一页
for page_number in range(len(pdf_document)):
# 获取页面
page = pdf_document[page_number]
# 将页面转换为图像
pix = page.get_pixmap()
img = Image.frombytes("RGB", [pix.width, pix.height], pix.samples)
# 指定图像文件名
img_filename = f'page_{page_number + 1}_{NowTime()}.jpg'
img_path = os.path.join(output_dir, img_filename)
# 保存图像
img.save(img_path)
# 将图像插入Markdown文件
img_tag = f'![Page {page_number + 1}]({img_path})'
md_file.write(img_tag + '\n\n')
# 关闭PDF文件
pdf_document.close()
print(f'Markdown content with images has been created at: {md_path}')
# 复制markdown 内容到剪贴板
with open(md_path, 'r', encoding='utf-8') as file:
import pyperclip
# 读取文件内容
content = file.read()
# 将内容复制到剪贴板
success = pyperclip.copy(content)
print(f"success={success}")
# 检查复制操作是否成功
if success or success==None:
ShowMessage("文本已成功复制到剪贴板.")
# print("copy ok")
else:
ShowMessage("复制操作失败,请重试.")
# print("copy fail")
本文来自博客园,作者:FE-有限元鹰,转载请注明原文链接:https://www.cnblogs.com/aksoam/p/18136385