使用python将多个tiff图像转换为pdf
我有一个图像文件列表,我想用这些图像生成一个output.pdf文件 以下代码仅适用于一个图像文件(此处为图像列表的第一个元素): 如何调整此代码以处理完整的图像文件列表 我试过:使用python将多个tiff图像转换为pdf,python,pdf,img2pdf,Python,Pdf,Img2pdf,我有一个图像文件列表,我想用这些图像生成一个output.pdf文件 以下代码仅适用于一个图像文件(此处为图像列表的第一个元素): 如何调整此代码以处理完整的图像文件列表 我试过: with open("output.pdf","wb") as f, io.BytesIO() as output: img = Image.open(image_list[0]) img.save(output, format='tiff') img2 = Image
with open("output.pdf","wb") as f, io.BytesIO() as output:
img = Image.open(image_list[0])
img.save(output, format='tiff')
img2 = Image.open(image_list[1])
img2.save(output, format='tiff')
f.write(img2pdf.convert(output.getvalue()))
但是它不起作用(创建的pdf只包含最后一幅图像,即图像列表[1])一个可能的黑客可能是通过
转换运行它:
导入操作系统
系统('convert'+''.join(image_list)+'output.pdf'))
我最终使用了以下代码:
for i in....
# Create one pdf file per tiff file
with open(str(i) + '.pdf', "wb") as f, io.BytesIO() as output:
img = PIL.Image.open(str(i) + '.tiff')
img.save(output, format='tiff')
f.write(img2pdf.convert(output.getvalue()))
# merge the pdf file into one output pdf file
pdf_writer = PdfFileWriter()
output_file = publication_number + ".pdf"
file_list = os.listdir()
pdf_list = []
for file in file_list:
if file.endswith(".pdf"):
pdf_list.append(file)
pdf_list.sort(key=lambda f: int(
''.join(filter(str.isdigit, f)))) # trier la liste d'image du plus petit au plus grand (et pas 1, 10, 11, 2, 3)
for pdf_file in pdf_list:
pdf_reader = PdfFileReader(pdf_file)
for page in range(pdf_reader.getNumPages()):
pdf_writer.addPage(pdf_reader.getPage(page))
with open(output_file, 'wb') as fh:
pdf_writer.write(fh)
for i in range(1, max_page + 1):
os.remove(str(i) + '.tiff')
os.remove(str(i) + '.pdf')
谢谢你的回复!最终目标是使用pyinstaller--onefile生成一个独立的可执行文件。因此,任何人都可以执行.exe文件。您的解决方案可以完成这项工作,但我更喜欢不运行命令行的解决方案。我希望我能找到一个。试试蟒蛇魔杖。尽管它需要ImageMagick。在本例中,我想我更愿意为每个tiff文件生成一个pdf并合并pdf,因为共享程序时不需要在每台计算机上安装ImageMagick。
for i in....
# Create one pdf file per tiff file
with open(str(i) + '.pdf', "wb") as f, io.BytesIO() as output:
img = PIL.Image.open(str(i) + '.tiff')
img.save(output, format='tiff')
f.write(img2pdf.convert(output.getvalue()))
# merge the pdf file into one output pdf file
pdf_writer = PdfFileWriter()
output_file = publication_number + ".pdf"
file_list = os.listdir()
pdf_list = []
for file in file_list:
if file.endswith(".pdf"):
pdf_list.append(file)
pdf_list.sort(key=lambda f: int(
''.join(filter(str.isdigit, f)))) # trier la liste d'image du plus petit au plus grand (et pas 1, 10, 11, 2, 3)
for pdf_file in pdf_list:
pdf_reader = PdfFileReader(pdf_file)
for page in range(pdf_reader.getNumPages()):
pdf_writer.addPage(pdf_reader.getPage(page))
with open(output_file, 'wb') as fh:
pdf_writer.write(fh)
for i in range(1, max_page + 1):
os.remove(str(i) + '.tiff')
os.remove(str(i) + '.pdf')