赞
踩
fitz.open(self, filename=None, stream=None, *, filetype=None, rect=None, width=0, height=0, fontsize=11)
若为默认参数,则创建一个新的PDF文档
filename (str,pathlib):打开已有的PDF文件,输入为文件的路径。
stream (bytes,bytearray,BytesIO):从内存中打开PDF,若不是PDF,则需 在filename或filetype中指明其类型。
filetype (str):指明文件类型,如"pdf"或".pdf"。
rect (rect_like):指定页面大小。
返回值:文档对象
Document.new_page(pno=-1, width=595, height=842)
pno (int):插入页面在int后,范围[-1, doc.page_count + 1)。
返回值:页面对象。
Document.save(outfile, garbage=0, clean=False, deflate=False, deflate_images=False, deflate_fonts=False, incremental=False, ascii=False, expand=0, linear=False, pretty=False, no_new_id=False, encryption=PDF_ENCRYPT_NONE, permissions=-1, owner_pw=None, user_pw=None)
若文件同名,则覆盖该文件
outfile (str,Path,fp):要保存的文件路径
返回值:None。
page.insert_text(point, text, fontsize=11, fontname='helv', fontfile=None, idx=0, color=None, fill=None, render_mode=0, border_width=1, encoding=TEXT_ENCODING_LATIN, rotate=0, morph=None, stroke_opacity=1, fill_opacity=1, overlay=True, oc=0)
page.insert_textbox(rect, buffer, fontsize=11, fontname='helv', fontfile=None, idx=0, color=None, fill=None, render_mode=0, border_width=1, encoding=TEXT_ENCODING_LATIN, expandtabs=8, align=TEXT_ALIGN_LEFT, charwidths=None, rotate=0, morph=None, stroke_opacity=1, fill_opacity=1, oc=0, overlay=True
point (point_like):以像素为单位的文本第一个字符的左下位置。
text (str/sequence):要插入的文本/文本序列。
lineheight (float):行高,若不为None。实际行高为fontsize * lineheight。
stroke_opacity (float):描边透明度。
fill_opacity (float):填充透明度。
rotate (int):旋转角度,接受值为90的倍数。
返回值:(int)插入的行数。
rect (rect_like):框大小。
buffer (str/sequence):要插入的文本。
返回值:(float) 若大于等于0,代表成功执行,返回的值为剩余线性空间像素。若为负值,则说明文本框大小不足。
page.insert_image(rect, filename=None, pixmap=None, stream=None, mask=None, rotate=0, alpha=-1, oc=0, xref=0, keep_proportion=True, overlay=True)
rect (rect_like): 放置位置。
filename (str):文件名。
stream (bytes,bytearray,io.BytesIO):内存中的图片。
返回值(int)嵌入图像的xref,再次插入时传入此参数可以提高速度。
get_pixmap(*, matrix=fitz.Identity, dpi=None, colorspace=fitz.csRGB, clip=None, alpha=False, annots=True)
matrix(matrix_like):用于旋转、剪切、缩放和移动的矩阵。
dpi (int):期望分辨率,调整此参数将会忽略matrix。
clip (irect_like):提取的区域。
page.get_text(opt, *, clip=None, flags=None, textpage=None, sort=False)
opt (str):所请求格式的字符串。可选参数有:“text”,“blocks”,“words”,“html”,“dict” 等。
Flags (int):标志位,如何处理关于空白和连字符的文本。
返回值 str/list/dict
import fitz #pdf转图片函数 #pdf_path为文件路径,img_path为要保存的路径,n为要提取的页码数。 def pdfconvertpicture(pdf_path,img_path,n): #使用fitz.open()创建文档对象 with fitz.open(pdf_path) as pdf: cout = 0 for pg in range(0, pdf.page_count): page = pdf[pg] #设置缩放和旋转系数,zoom_x, zoom_y取相同值,表示等比例缩放 #mat = fitz.Matrix(2, 2) #pm = page.get_pixmap(matrix=mat, alpha=False) #个人感觉dpi的效果更清晰一点。 pm = page.get_pixmap(matrix=mat,dpi=500,alpha=False) page_num = pg + 1 # 页码从1开始 pm.save(f'{img_path}/{page_num}.png') # 第1张图片名:1.png,以此类推 cout = cout + 1 if cout == n: break
import fitz #pdf转图片函数 #pdf_path为文件路径,img_path为要保存的路径,n为要提取的页码数。 def pdfgetimg(pdf_path,img_path,n): #使用fitz.open()创建文档对象 with fitz.open(pdf_path) as pdf: cout = 0 for pg in range(0, pdf.page_count): page = pdf[pg] #blocks会中有个返回值会说明为文本还是图像。 blocks = page.get_text("blocks") for block in blocks: bbox=[block[0],block[1],block[2],block[3]] #block[4]为文本内容,block[6] 1为图像,2为文本 if block[6]==1: img = page.get_pixmap(clip=bbox, alpha=False, dpi=500) page_num = pg + 1 # 页码从1开始 img .save(f'{img_path}/{page_num}_{bbox}.png') # 第1张图片名:1.png,以此类推。 cout = cout + 1 if cout == n: break
更多教程请参照官方参考文档:https://pymupdf.readthedocs.io/en/latest/classes.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。