Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将PDF文件转换为多页图像_Python_Image_Pdf_Pymupdf - Fatal编程技术网

Python 将PDF文件转换为多页图像

Python 将PDF文件转换为多页图像,python,image,pdf,pymupdf,Python,Image,Pdf,Pymupdf,我正在尝试使用PyMuPDF将多页PDF文件转换为图像: pdffile = "input.pdf" doc = fitz.open(pdffile) page = doc.loadPage() # number of page pix = page.getPixmap() output = "output.tif" pix.writePNG(output) 但是我需要将PDF文件的所有页面转换为多页面tiff中的单个图像,当我给页面参数一个页面范围时

我正在尝试使用PyMuPDF将多页PDF文件转换为图像:

pdffile = "input.pdf"
doc = fitz.open(pdffile)
page = doc.loadPage()  # number of page
pix = page.getPixmap()
output = "output.tif"
pix.writePNG(output)

但是我需要将PDF文件的所有页面转换为多页面tiff中的单个图像,当我给页面参数一个页面范围时,它只需要一个页面,有人知道我可以怎么做吗?

当你想要转换PDF文件的所有页面时,你需要一个for循环。另外,当您调用
.getPixmap()
时,您需要像
matrix=mat
这样的属性来基本上提高分辨率。下面是代码片段(不确定这是否是您想要的,但这会将所有PDF转换为图像):


对于解决方案,从Github到演示它的含义以及如何在需要时用于您的案例。

当您想要转换PDF的所有页面时,您需要一个For循环。另外,当您调用
.getPixmap()
时,您需要像
matrix=mat
这样的属性来基本上提高分辨率。下面是代码片段(不确定这是否是您想要的,但这会将所有PDF转换为图像):

import fitz
from PIL import Image

input_pdf = "input.pdf"
output_name = "output.tif"
compression = 'zip'  # "zip", "lzw", "group4" - need binarized image...

zoom = 2 # to increase the resolution
mat = fitz.Matrix(zoom, zoom)

doc = fitz.open(input_pdf)
image_list = []
for page in doc:
    pix = page.getPixmap(matrix = mat)
    img = Image.frombytes("RGB", [pix.width, pix.height], pix.samples)
    image_list.append(img)
    
if image_list:
    image_list[0].save(
        output_name,
        save_all=True,
        append_images=image_list[1:],
        compression=compression,
        dpi=(300, 300),
    )
对于解决方案,从Github到演示它的含义以及如何在需要时用于您的案例

import fitz
from PIL import Image

input_pdf = "input.pdf"
output_name = "output.tif"
compression = 'zip'  # "zip", "lzw", "group4" - need binarized image...

zoom = 2 # to increase the resolution
mat = fitz.Matrix(zoom, zoom)

doc = fitz.open(input_pdf)
image_list = []
for page in doc:
    pix = page.getPixmap(matrix = mat)
    img = Image.frombytes("RGB", [pix.width, pix.height], pix.samples)
    image_list.append(img)
    
if image_list:
    image_list[0].save(
        output_name,
        save_all=True,
        append_images=image_list[1:],
        compression=compression,
        dpi=(300, 300),
    )