pymupdf Tutorial 笔记

导入

import fitz

打开文档
 

doc = fitz.open(filename)

# fitz.Document(filename)

Document对象的属性

Document.page_count        文档页数

Documet.metadata                文档元数据(文档信息),字典

Document.get_toc()                文档目录(list对象)

Doument.load_page(page_num)             读取指定的一页,返回page对象

>>> doc.metadata
{'format': 'PDF 1.7', 'title': '', 'author': 'Griselda Conejo López', 'subject': '', 'keywords': '', 'creator': 'Microsoft® Word for Microsoft 365', 'producer': 'Microsoft® Word for Microsoft 365', 'creationDate': "D:20200619152706-04'00'", 'modDate': "D:20200619152706-04'00'", 'trapped': '', 'encryption': None}


Page对象

可以将页面渲染为位图图像或矢量(SVG)图像,可以选择缩放、旋转、移动或剪切页面。

可以抽取页面中的文本、图片,搜索文本;

可以在页面中添加文本和图像。

1.创建表示页面的Page对象,页号也可以用负值来取页面。

page = doc.load_page(pno)  # loads page number 'pno' of the document (0-based)
page = doc[pno]  # the short form

2.迭代处理页面

for page in doc:
    # do something with 'page'

# ... or read backwards
for page in reversed(doc):
    # do something with 'page'

# ... or even use 'slicing'
for page in doc.pages(start, stop, step):
    # do something with 'page'

3.处理页面中超链接和注释

# get all links on a page
links = page.get_links()
for link in page.links():
    # do something with 'link'

for annot in page.annots():
    # do something with 'annot'

for field in page.widgets():
    # do something with 'field'

生成页面

创建包含位图图像的页面:

1.获取一个Pixmap对象,他可以包含RGB图像,提供了控制图像的方法,还可以传入alpha=True,用来包含RGBA图像。

pix = page.get_pixmap()

2.使用矢量图,要用page.get_svg_image()

3.放图像入页面

pix.save('a.png')

抽取文本和图像

text = page.get_text(opt)

opt可以为以下常用格式参数

“text”        默认参数,仅返回所有用换行符分隔的字符串,无格式、文本位置信息

“block”      返回段落文本列表,即列表每一元素为一段落文本,还包含文本在页面上的坐标位置等其他信息,如:(76.58399963378906, 699.2760009765625, 529.6240234375, 715.7640380859375, ' You can \n', 24, 0)为一个例了。

“words”        生成一个单词列表,如下为列表中的一项(496.69000244140625, 713.3400268554688, 526.6420288085938, 729.3480224609375, 'height', 25, 0, 15)

“html”        生成包含图片的html页面

搜索文本

areas = page.search_for("mupdf")

返回搜索到的文本在页面中所有该文本的所在的页面位置信息,结果为Rect类型数据的一个列表

保存文档

Document.save()

对页面进行修改、删除、添加和调整

Document.delete_page()
Document.delete_pages()
Document.copy_page()
Document.fullcopy_page()
Document.move_page()
Document.select()
Document.insert_page()
Document.new_page()

合并与分割pdf

# append complete doc2 to the end of doc1
doc1.insert_pdf(doc2)

doc2 = fitz.open()                 # new empty PDF
doc2.insert_pdf(doc1, to_page = 9)  # first 10 pages
doc2.insert_pdf(doc1, from_page = len(doc1) - 10) # last 10 pages
doc2.save("first-and-last-10.pdf")

关闭文档

Document.close()

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值