首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyPDF2附加文件问题

PyPDF2附加文件问题
EN

Stack Overflow用户
提问于 2015-12-17 08:35:40
回答 1查看 2.7K关注 0票数 1

我需要编写将图像转换为pdfs并将tchem合并为一个的脚本。

我尝试过使用img2pdf和PYPDF2,但是我遇到了错误。谁能看看,告诉我我做错了什么。

代码语言:javascript
复制
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"))

错误

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:/Users/ms/Desktop/Desktop/test.py", line 13, in <module>
    merger.append(fileobj=PDFfile)
  File "C:\Python34\lib\site-packages\PyPDF2\merger.py", line 203, in append
    self.merge(len(self.pages), fileobj, bookmark, pages, import_bookmarks)
  File "C:\Python34\lib\site-packages\PyPDF2\merger.py", line 133, in merge
    pdfr = PdfFileReader(fileobj, strict=self.strict)
  File "C:\Python34\lib\site-packages\PyPDF2\pdf.py", line 1065, in __init__
    self.read(stream)
  File "C:\Python34\lib\site-packages\PyPDF2\pdf.py", line 1660, in read
    stream.seek(-1, 2)
AttributeError: 'bytes' object has no attribute 'seek'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-17 12:26:35

img2pdf.convert返回对应pdf文件的字节(作为字符串?),而不是文件处理程序。如果您阅读help(merger.append),您将看到您需要传递一个文件处理程序或路径到该PDF文件。这里有一个可能的解决办法。也可能不生成所有的中间PDF文件。

代码语言:javascript
复制
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()

顺便说一句,使用常规工具(如转换长春花pdftk )也要简单得多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34329968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档