首页 > 解决方案 > 在修剪框上裁剪 pdf 并在 Python 中另存为 jpg?

问题描述

我正在尝试在 Python 中创建一个脚本,该脚本从 pdf 文件中的 timbox 中裁剪 pdf 并将结果保存为 *.jpg 文件。

我设法裁剪了 pdf 文件(result.pdf 被裁剪),但是当我保存为 *.jpg 时,它没有被裁剪(与 test.pdf 大小相同)。另外,认为应该有比我想做的更好的方法,首先裁剪并将pdf保存到文件中,然后将裁剪的pdf转换为jpg。是否可以在不先将裁剪的 pdf 保存为文件的情况下转换为 jpg?

from PyPDF4 import PdfFileWriter, PdfFileReader

input = PdfFileReader(open("test.pdf","rb"))
output = PdfFileWriter() 

page = input.getPage(0)
trimboxUpperLeft = page.trimBox.getUpperLeft()
trimboxLowerRight = page.trimBox.getLowerRight()

n = input.getNumPages()

for i in range(n):
    page = input.getPage(i)
    page.cropBox.upperLeft = (trimboxUpperLeft)
    page.cropBox.lowerRight = (trimboxLowerRight)
    output.addPage(page) 

outputStream = open('result.pdf','wb')
output.write(outputStream)
outputStream.close()

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

标签: pythonpython-3.xpdfjpeg

解决方案


images = convert_from_path('result.pdf', use_cropbox=True, poppler_path='./poppler/bin')

use_cropbox=True 默认库使用 MediaBox,但 page.cropBox.upperLeft = (trimboxUpperLeft) 仅更改 CropBox。

poppler_path='./poppler/bin' 可以将poppler保存在任意文件夹中。


推荐阅读