功能:

  • 提取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")

Python脚本 | 提取pdf页面为jpg的更多相关文章

  1. C#调用Python脚本打印pdf文件

     介绍:通过pdf地址先将文件下载到本地,然后调用打印机打印,最后将下载的文件删除. 环境:windows系统.(windows64位) windows系统中安装python3.6.2环境 资料: O ...

  2. python操作三大主流数据库(5)python操作mysql⑤使用Jinja2模板提取优化页面展示

    python操作mysql⑤使用Jinja2模板提取优化页面展示 在templates目录下的index.html.cat.html等页面有一些共同的元素,代码比较冗余可以使用模板提取公共代码,在各网 ...

  3. Python使用Tabula提取PDF表格数据

    今天遇到一个批量读取pdf文件中表格数据的需求,样式大体是以下这样: python读取PDF无非就是三种方式(我所了解的),pdfminer.pdf2htmlEX 和 Tabula.综合考虑后,选择了 ...

  4. 测试网站页面网速的一个简单Python脚本

    无聊之余,下面分享一个Python小脚本:测试网站页面访问速度 [root@huanqiu ~]# vim pywww.py #!/usr/bin/python # coding: UTF-8 imp ...

  5. arcgis python脚本工具实例教程—栅格范围提取至多边形要素类

    arcgis python脚本工具实例教程-栅格范围提取至多边形要素类 商务合作,科技咨询,版权转让:向日葵,135-4855_4328,xiexiaokui#qq.com 功能:提取栅格数据的范围, ...

  6. 利用python第三方库提取PDF文件的表格内容

    小爬最近接到一个棘手任务:需要提取手机话费电子发票PDF文件中的数据.接到这个任务的第一时间,小爬决定搜集各个地区各个时间段的电子发票文件,看看其中的差异点.粗略统计下来,PDF文件的表格框架是统一的 ...

  7. Python:解析PDF文本及表格——pdfminer、tabula、pdfplumber 的用法及对比

    pdf 是个异常坑爹的东西,有很多处理 pdf 的库,但是没有完美的. 一.pdfminer3k pdfminer3k 是 pdfminer 的 python3 版本,主要用于读取 pdf 中的文本. ...

  8. 使用Python脚本分析你的网站上的SEO元素

    撰稿马尼克斯德芒克 上2019年1月, Sooda internetbureau Python就是自动执行重复性任务,为您的其他搜索引擎优化(SEO)工作留出更多时间.没有多少SEO使用Python来 ...

  9. Python快速入门PDF高清完整版免费下载|百度云盘

    百度云盘:Python快速入门PDF高清完整版免费下载 提取码:w5y8 内容简介 这是一本Python快速入门书,基于Python 3.6编写.本书分为4部分,第一部分讲解Python的基础知识,对 ...

  10. 某互联网后台自动化组合测试框架RF+Sikuli+Python脚本

    某互联网后台自动化组合测试框架RF+Sikuli+Python脚本 http://www.jianshu.com/p/b3e204c8651a 字数949 阅读323 评论1 喜欢0 一.**Robo ...

随机推荐

  1. Zookeeper Java API操作流程

    首先需要配置一台Zookeeper服务器 pom文件     <dependencies> <!-- https://mvnrepository.com/artifact/org.a ...

  2. Linux 添加开机自启动

    rc.local 方式 一.& 在 Linux 命令后加上 &  可以在后台运行 二.nohup 对 SIGHUP 信号免疫,对 SIGINT 信号不免疫,可用 shopt | gre ...

  3. Nginx漏洞修复:SSL/TLS 服务器瞬时 Diffie-Hellman 公共密钥过弱

    SSL/TLS 服务器瞬时 Diffie-Hellman 公共密钥过弱[原理扫描]. 需编辑 nginx.conf 解决. 1.生成 dhparams.pem. cd /usr/local/nginx ...

  4. consul注册和删除命令

    curl -X PUT -d '{"id": "redis-xxx","name": "redis-xxx"," ...

  5. Composer: Command Not Found

    I am using CentOS and had same problem. I changed /usr/local/bin/composer to /usr/bin/composer and i ...

  6. Qt开发经验小技巧231-235

    关于c++中继承多态virtual和override的几点总结. 子类可以直接使用基类中的protected下的变量和函数. 基类函数没加virtual,子类有相同函数,实现的是覆盖.用基类指针调用时 ...

  7. 一篇复杂的研究🤔A Comprehensive Study of 😨Jailbreak Attack versus Defense for Large Language Models

    本认为,这篇文章的亮点在于对攻击和防御技术的多维评估,另外通过比较不同模型(如Vicuna.LLama和GPT-3.5 Turbo)对攻击和防御策略的反应,文章提供了对模型间差异的深入理解. 对现有的 ...

  8. PostgreSQL 数据库的启动与停止管理

    title: PostgreSQL 数据库的启动与停止管理 date: 2024/12/28 updated: 2024/12/28 author: cmdragon excerpt: 作为一个强大的 ...

  9. 模拟数据生成器mock.js入门

    1.在某一指定目录下,按下shift+鼠标右键,,点击"在此处打开Powershell窗口(S)",启动命令行窗口.如下图: 2.在窗口中输入以下命令以便创建项目:vue crea ...

  10. Transformers in Vision

    Transformers in Vision 介绍 最初引入现在著名的Attention is all you need1,Transformer 多年来一直主导着自然语言处理 (NLP) 领域.特别 ...