Python PyPDF2追加文件问题
我需要编写脚本,将图像转换为PDF文件,并合并成一个tchem 我曾尝试使用img2pdf和PYPDF2,但出现了错误。 谁能看看,告诉我我做错了什么Python PyPDF2追加文件问题,python,Python,我需要编写脚本,将图像转换为PDF文件,并合并成一个tchem 我曾尝试使用img2pdf和PYPDF2,但出现了错误。 谁能看看,告诉我我做错了什么 import img2pdf import os from PyPDF2 import PdfFileReader, PdfFileMerger, PdfFileWriter merger = PdfFileMerger() path = input() for root,dir,files in os.walk(path):
import img2pdf
import os
from PyPDF2 import PdfFileReader, PdfFileMerger, PdfFileWriter
merger = PdfFileMerger()
path = input()
for root,dir,files in os.walk(path):
for eachfile in files:
if "pdf" not in eachfile:
os.chdir(root)
PDFfile = img2pdf.convert((eachfile,), dpi=None, x=None, y=None)
merger.append(fileobj=PDFfile)
merger.write(open("out.pdf", "wb"))
错误
回溯(最近一次呼叫最后一次):
文件“C:/Users/ms/Desktop/Desktop/test.py”,第13行,在
append(fileobj=PDFfile)
文件“C:\Python34\lib\site packages\PyPDF2\merge.py”,第203行,在append中
self.merge(len(self.pages)、fileobj、书签、页面、导入书签)
文件“C:\Python34\lib\site packages\PyPDF2\merge.py”,第133行,在merge中
pdfr=PdfFileReader(fileobj,strict=self.strict)
文件“C:\Python34\lib\site packages\PyPDF2\pdf.py”,第1065行,在_init中__
self.read(流)
文件“C:\Python34\lib\site packages\PyPDF2\pdf.py”,第1660行,已读
stream.seek(-1,2)
AttributeError:“bytes”对象没有属性“seek”
img2pdf.convert
返回相应pdf文件的字节(作为字符串?),而不是文件处理程序。如果阅读帮助(merge.append)
,您将看到需要传递文件处理程序或PDF文件的路径。这里有一个可能的解决办法。也可能不生成所有的中间PDF文件
import img2pdf
import os
from PyPDF2 import PdfFileReader, PdfFileMerger, PdfFileWriter
merger = PdfFileMerger()
path = "/tmp/images"
for root,dir,files in os.walk(path):
for eachfile in files:
if "pdf" not in eachfile:
os.chdir(root)
pdfbytes = img2pdf.convert((eachfile,), dpi=None, x=None, y=None)
pdfname = eachfile.split('.')[0]+".pdf"
f = open(pdfname, 'wb+')
f.write(pdfbytes)
merger.append(fileobj=f)
f.close()
f = open("out.pdf", "wb")
merger.write(f)
f.close()
顺便说一下,使用常规工具(如,)也会简单得多。您会遇到什么错误?这与找不到要打开的文件有关吗?您应该使用文件的完整路径,否则在目录中找不到文件。能否显示错误消息。您好,谢谢您的回复。我已经添加了错误信息,来自图像的PDF没有保存在任何地方。也许这就是合并的问题所在?它与f.close()一起在一个已删除的循环中工作。我知道我可以使用这个工具,但写我自己的更有趣:)顺便问一下,如何删除合并后的每个PDF文件,只保留合并后的一个?
import img2pdf
import os
from PyPDF2 import PdfFileReader, PdfFileMerger, PdfFileWriter
merger = PdfFileMerger()
path = "/tmp/images"
for root,dir,files in os.walk(path):
for eachfile in files:
if "pdf" not in eachfile:
os.chdir(root)
pdfbytes = img2pdf.convert((eachfile,), dpi=None, x=None, y=None)
pdfname = eachfile.split('.')[0]+".pdf"
f = open(pdfname, 'wb+')
f.write(pdfbytes)
merger.append(fileobj=f)
f.close()
f = open("out.pdf", "wb")
merger.write(f)
f.close()