我有一个函数可以从 PDF 文件中获取页面,并且应该使用(PIL Fork)pyPdf2
将第一页转换为 png(或 jpg )Pillow
from PyPDF2 import PdfFileWriter, PdfFileReader
import os
from PIL import Image
import io
# Open PDF Source #
app_path = os.path.dirname(__file__)
src_pdf= PdfFileReader(open(os.path.join(app_path, "../../../uploads/%s" % filename), "rb"))
# Get the first page of the PDF #
dst_pdf = PdfFileWriter()
dst_pdf.addPage(src_pdf.getPage(0))
# Create BytesIO #
pdf_bytes = io.BytesIO()
dst_pdf.write(pdf_bytes)
pdf_bytes.seek(0)
file_name = "../../../uploads/%s_p%s.png" % (name, pagenum)
img = Image.open(pdf_bytes)
img.save(file_name, 'PNG')
pdf_bytes.flush()
这会导致错误:
OSError:无法识别图像文件 <_io.BytesIO 对象位于 0x0000023440F3A8E0>
我发现了一些具有类似问题的线程(PIL open() 方法不适用于 BytesIO),但我看不出我在哪里错了,因为我pdf_bytes.seek(0)
已经添加了。
任何提示表示赞赏