赞
踩
Fitz 库是一个图像处理库,主要用于打开 PDF、TIFF 和 JPEG 格式的图像,读取和写入 PDF 文件,提取 PDF 页面以及在页面上进行标记和注释。
PyMuPDF 是一个基于 Python 的开源 PDF 处理库,提供了一系列的 PDF 文档处理功能。
import fitz # 设置 PDF 文件路径 file = "6.pdf" # 打开 PDF 文件 pdf_file = fitz.open(file) # 遍历 PDF 页面 for page_index in range(len(pdf_file)): # 获取 PDF 页面 page = pdf_file[page_index] # 获取页面上所有图像 image_list = page.get_images() # 输出此页面中找到的图像数量 if image_list: print( f"[+] 在页面:{page_index},总共发现 {len(image_list)} 张图片。") else: print(f"[+] 在页面:{page_index},没有发现图片。") for image_index, img in enumerate(page.get_images(), start=1): # 获取图像的XREF编号和图像数据 xref = img[0] pix = fitz.Pixmap(pdf_file, xref) # 保存图像 if str(fitz.csRGB) == str(pix.colorspace): img_path = f'image{page_index+1}_{xref}.png' pix.save(img_path) print(f"[+] 已保存所有图片。")
以上代码运行后会保存 PDF 文件中的所有图像并有以下输出:
[+] 在页面:0,总共发现 1 张图片。
[+] 在页面:1,没有发现图片。
[+] 已保存所有图片。
如果将 PDF 页面转换为图像,只需要遍历所有 PDF 页面,使用 get_pixmap() 方法将 PDF 转换为图像,然后保存图像。
import fitz
doc = fitz.open('1.pdf')
for page in doc:
pix = page.get_pixmap(matrix=fitz.Identity, dpi=None, colorspace=fitz.csRGB, clip=None, alpha=True, annots=True)
pix.save(f"pdfimage-{page.number}.png")
以上代码将 PDF 页面转换为 PNG 图像,PNG 图像可以实现背景透明。如果需要保存 JPG 图像,需要去掉 get_pixmap() 中的参数 alpha=True。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。