在 python PyPDF2 包中导出为图像而不是 pdf

Export to image not pdf in python PyPDF2 package

我有以下代码裁剪部分 pdf 文件然后将输出保存为 PDF

from PyPDF2 import PdfFileWriter, PdfFileReader

with open("Sample.pdf", "rb") as in_f:
    input1 = PdfFileReader(in_f)
    output = PdfFileWriter()

    numPages = input1.getNumPages()
    print("Document Has %s Pages." % numPages)

    for i in range(1):
        page = input1.getPage(i)
        print(page.mediaBox.getUpperRight_x(), page.mediaBox.getUpperRight_y())
        page.trimBox.lowerLeft = (280, 280)
        page.trimBox.upperRight = (220, 200)
        page.cropBox.lowerLeft = (100, 720)
        page.cropBox.upperRight = (220, 800)
        output.addPage(page)

    with open("Output.pdf", "wb") as out_f:
        output.write(out_f)

如何保存为图片而不是 PDF? 我找到了这段代码,但输出质量不高。如何提高图像输出的质量?

import fitz

pdffile = "Output.pdf"
doc = fitz.open(pdffile)
page = doc.loadPage(0)
pix = page.getPixmap()
output = "Output.jpg"
pix.writePNG(output)

您好,您可以使用 pdf2image 库来实现。 您可以在最后使用以下代码:

from pdf2image import convert_from_path
images = convert_from_path('Output.pdf')
for i in range(len(images)):
    images[i].save('Output'+ str(i) +'.jpg', 'JPEG')

如果您希望可以使用 os 库删除您使用以下代码制作的 pdf,以避免自己删除 pdf 的麻烦。

import os
os.remove("Output.pdf")

这解决了问题,但我欢迎任何先进的想法和改进

import fitz

pdffile = "Output.pdf"
doc = fitz.open(pdffile)

zoom = 2    # zoom factor
mat = fitz.Matrix(zoom, zoom)

page = doc.loadPage(0)
pix = page.getPixmap(matrix = mat)
output = "Output.jpg"
pix.writePNG(output)