功能:

  • 提取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. 【软件工程与UML】第1章 笔记和练习题

    基本概念 软件 = 程序 + 数据 + 文档 软件的特点 抽象性:软件是一种逻辑实体 可复制性:软件是通过人们智力活动,把知识和技术转化为信息的一种产品. 不会磨损: 依赖性:软件的开发和运行经常收到 ...

  2. Doc for DevNow

    前言 DevNow 是一个精简的开源技术博客项目模版,支持 Vercel 一键部署,支持评论.搜索等功能,欢迎大家体验. 首先庆祝下 DevNow star 在不久前过百,对我来说还是蛮有成就感的,感 ...

  3. sublime text 4 安装(含激活码)

    一.下载步骤 官网地址:Sublime Text - the sophisticated text editor for code, markup and prose windows下载链接:Than ...

  4. Qt/C++音视频开发52-采集本地屏幕桌面的终极设计

    一.前言 最开始设计的时候,只考虑了一个屏幕的情况,这种当然是最理想的情况,实际上双屏或者多屏的用户也不在少数,比如我这两个屏幕,屏幕1是1080P,屏幕2是2K分辨率,打印两个屏幕的区域是 QRec ...

  5. C# .Net FrameWork3.5中异步HTTP请求时,由于安全协议的问题System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)方法抛出“基础连接已经关闭: 发送时发生错误”的解决办法

    现象描述: C# .Net FrameWork3.5中异步HTTP请求时,由于安全协议的问题System.Net.HttpWebRequest.EndGetResponse(IAsyncResult ...

  6. IM开发者的零基础通信技术入门(十):零基础,史上最强5G技术扫盲

    本文引用了"鲜枣课堂"的<史上最强5G科普>文章内容.为了更好的内容呈现,在引用和收录时内容有改动,转载时请注明原文来源. 1.内容概述 ➊ 5G技术的关注度越来越高: ...

  7. 场景题:假设有40亿QQ号,但只有1G内存,如何实现去重?

    当数据量比较大时,使用常规的方式来判重就不行了.例如,使用 MySQL 数据库判重,或使用 List.contains() 或 Set.contains() 判重就不行了,因为数据量太大会导致内存放不 ...

  8. Airtest使用问题列表

        ios 系统为12.4.8,因此安装Xcode 10.3; 问题1:  python3: error: unable to find utility "python3", ...

  9. Solution Set -「NOIP Simu.」20221010

      会不会组题啊? 希望 trash round 少来点. 「Unkown」构造字符串   给定 \(m\) 组形如 \((x,y,z)\), 表示 \(\operatorname{lcp}(S[x: ...

  10. CF div3 995 (A~G)

    期末周之第三把网瘾(真是越来越放肆了...).这次赛时了一把div 3 , 又一次只做出了A~E,写完E后剩下的题没时间看了(受了些寝室噪音的干扰,最后二十分钟才出).赛后看了下F和G,感觉也是一时半 ...