[Python]PDF文件与图片转换(PyMuPDF)及转PPT

您所在的位置:网站首页 cad转换pdf命令 [Python]PDF文件与图片转换(PyMuPDF)及转PPT

[Python]PDF文件与图片转换(PyMuPDF)及转PPT

2024-07-15 22:52:34| 来源: 网络整理| 查看: 265

文章目录 安装与简介MuPDFPyMuPDF PyMuPDF使用元数据页面Page 代码示例PDF转图片图片转PDFPDF转PPT PyMuPDF提供了PDF及流行图片处理接口。

安装与简介

安装:pip install PyMuPDF

PyMuPDF使用手册参见https://pymupdf.readthedocs.io/en/latest/index.html

MuPDF

MuPDF是一个轻量级的PDF、XPS和电子书查看器。MuPDF由软件库、命令行工具和各种平台的查看器组成:

支持多种文档格式:如PDF、XPS、OpenXPS、CBZ、EPUB和FictionBook 2;命令行工具可注释、编辑文档,并将文档转换为其他格式:如HTML、SVG、PDF和CBZ。 PyMuPDF

PyMuPDF是MuPDF的Python接口库:

可访问扩展名为“.pdf”、“.xps”、“.oxps”、“.cbz”、“.fb2”或“.epub”的文档;可像文档样处理流行图像格式:“.png”,“.jpg”,“.bmp”,“.tiff”等

对于所有支持的文档类型可以:

解密文件访问元信息、链接和书签以栅格格式(PNG和其他格式)或矢量格式SVG呈现页面搜索文本提取文本和图像转换为其他格式:PDF, (X)HTML, XML, JSON, text 对于PDF文档,存在大量的附加功能,可以:创建、合并或拆分。页面可以通过多种方式插入、删除、重新排列或修改(包括注释和表单字段)。 可以提取或插入图像和字体完全支持嵌入式文件pdf文件可以重新格式化,以支持双面打印,色调分离,应用标志或水印完全支持密码保护:解密、加密、加密方法选择、权限级别和用户/所有者密码设置支持图像、文本和绘图的PDF可选内容概念可以访问和修改低级PDF结构 PyMuPDF使用

通过open可打开文档(Document对象):

import fitz doc = fitz.open(filename) # ... doc.save('file') doc.close()

Document中发主要方法与属性:

方法/属性描述Document.page_count页数 (int)Document.metadata元数据 (dict)Document.get_toc()获取目录 (list)Document.load_page()读取页面

对于PDF文档,有以下页面操作方法:

删除页面:Document.delete_page()和Document.delete_pages()复制或移动页面:Document.copy_page()、Document.fullcopy_page()和Document.move_page()选择页面(只保留选择范围内的页面):Document.select()插入新页:Document.insert_page()和Document.new_page(),以及Document.insert_pdf() 元数据

Document.metadata是一个具有以下键的Python字典。

KeyValueproducerproducer (producing software)formatformat: ‘PDF-1.4’, ‘EPUB’, etc.encryptionencryption method used if anyauthor作者modDate最后修改日期keywords关键字title标题creationDate创建日期creatorcreating applicationsubjectsubject 页面Page

页面是MuPDF的核心: • 可以将页面呈现为光栅或矢量(SVG)图像,可以选择缩放、旋转、移动或剪切页面。 • 可以提取多种格式的页面文本和图像,并搜索文本字符串。 • 对于PDF文档,可以使用更多的方法向页面添加文本或图像。

从Document中获取页面,页面索引:

第一页为0;负数表示从末尾倒数:如doc[-1]表示获取最后一页; # pno是页面索引 page = doc.load_page(pno) # or page = doc[pno]

页面操作方法:

page.get_links():获取页面中的连接(返回字典);page.annots():获取注释;page.widgets():获取表单;pix = page.get_pixmap():获取光栅图像(整个页面作为一个图像); pix.save('page.jpg'):保存为图像; page.get_svg_image():获取矢量图像;page.get_text(opt):获取文本,opt可为: “text”:(默认)带换行符的纯文本(无格式、无文字位置详细信息、无图像);“blocks”:生成文本块(段落)的列表;“words”:生成单词列表(不包含空格的字符串);“html”:创建页面的完整视觉版本,包括任何图像;“dict”/“json”:与HTML相同的信息级别,但作为Python字典或JSON字符串。“rawdict”/“rawjson”:“dict”/"json"的超级集合。它还提供诸如XML之类的字符详细信息。“xhtml”:文本信息级别与文本版本相同,但包含图像。“xml”:不包含图像,但包含每个文本字符的完整位置和字体信息,使用XML模块进行解释。 page.search_for("txt"):搜索文本 代码示例 PDF转图片

通过get_pixmap获取每页PDF为图片,然后保存即可。其中zoom用于控制生成图片的缩放比例。

import fitz def pdf2image(pdfFile, storePath, zoom=2.0): doc = fitz.open(pdfFile) picName = os.path.splitext(os.path.basename(pdfFile))[0] index = 0 os.makedirs(storePath, exist_ok=True) images = [] print(f"To convert: {pdfFile}") for pg in range(doc.page_count): page = doc[pg] index += 1 rotate = int(0) print(f"\tconvert page {index}") # 每个尺寸的缩放系数(提高生成分辨率) zoom_x, zoom_y = zoom, zoom mat = fitz.Matrix(zoom_x, zoom_y) pm = page.get_pixmap(matrix=mat, alpha=False) imgName = '{}-{}.jpg'.format(picName, index) imgFile = os.path.join(storePath, imgName) pm.save(imgFile) images.append(imgFile) doc.close() return images 图片转PDF

把图片插入到新建页中(插入位置使用页面框,即填充整个页面)

def image2pdf(imgDir, pdfFile, width=595, height=842): doc = fitz.open() print("To convert image to PDF:") for img in sorted(glob.glob("{}/*".format(imgDir))): print(f"\tAdd image {img}") page = doc.new_page(width=width, height=height) page.insert_image(page.rect, filename=img) # 将当前页插入文档 doc.save(pdfFile) print(f"PDF save to {pdfFile}") doc.close() PDF转PPT

转PPT时需要用到pptx库:pip install python-pptx 使用文档:https://python-pptx.readthedocs.io/en/latest/index.html

先把PDF转为图片,然后把每张图片生成一个幻灯片页面(PPT页面大小有width与height控制)

import fitz import pptx from pptx.util import Inches def pdf2pptx(pdfFile, pptFile, imgPath, width=10, height=7.5, zoom=2.0): images = pdf2image(pdfFile, imgPath, zoom) ppt = pptx.Presentation() for i in images: layout = ppt.slide_layouts[0] # 定义一个PPT页面样式 slide = ppt.slides.add_slide(layout) slide.shapes.add_picture( image_file=i, left=Inches(0), top=Inches(0), width=Inches(width), height=Inches(height) ) ppt.save(pptFile) shutil.rmtree(imgPath)


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭