首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未找到EOF标记-如何在PyPDF和PyPDF2中修复?

未找到EOF标记-如何在PyPDF和PyPDF2中修复?
EN

Stack Overflow用户
提问于 2013-04-23 14:30:15
回答 1查看 9.9K关注 0票数 12

我正在尝试使用Python将几个PDF文件组合成一个PDF文件。我已经尝试了PyPDF和PyPDF2 -在一些文件上,它们都抛出了这个相同的错误:

PdfReadError:找不到EOF标记

以下是我的代码(page_files)是要组合的PDF文件路径列表:

代码语言:javascript
复制
# use pypdf to combine pdf pages
output = PdfFileWriter()
for pf in page_files:
    filestream = file(pf, "rb")
    pdf = PdfFileReader(filestream)            
    for num in range(pdf.getNumPages()):
        output.addPage(pdf.getPage(num))            

# write final file
outputStream = file(pdf_full_path, "wb")
output.write(outputStream)
outputStream.close()

我已经阅读了一些关于这个主题的StackOverflow帖子,但没有一个包含有效的解决方案。如果你已经成功地使用Python组合了PDF文件,我很想听听你是怎么做的。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-10-22 20:37:12

是否仍然有人在寻找合并pdf的“列表”:

注意:使用glob获取正确的文件列表。<-这将真正保护您的一天^^

看看这个:glob module reference

代码语言:javascript
复制
from PyPDF2 import PdfFileMerger, PdfFileReader, PdfFileWriter
import os
import glob

class MergeAllPDF:
    def __init__(self):
        self.mergelist = []

    def create(self, filepath, outpath, outfilename):
        self.outfilname = outfilename
        self.filepath = filepath
        self.outpath = outpath
        self.pdfs = glob.glob(self.filepath)
        self.myrange = len(self.pdfs)

        for _ in range(self.myrange):
            if self.pdfs:
                self.mergelist.append(self.pdfs.pop(0))
        self.merge()

    def merge(self):
        if self.mergelist:
            self.merger = PdfFileMerger()
            for pdf in self.mergelist:
                self.merger.append(open(pdf, 'rb'))  
            self.merger.write(self.outpath + "%s.pdf" % (self.outfilname))
            self.merger.close()
            self.mergelist = []
        else:
            print("mergelist is empty please check your input path")

# example how to use
#update your path here:


inpath = r"C:\Users\Fabian\Desktop\mergeallpdfs\scan\*.pdf" #here are your single page pdfs stored
outpath = r"C:\Users\Fabian\Desktop\mergeallpdfs\output\\" #here your merged pdf will be stored

b = MergeAllPDF()
b.create(inpath, outpath, "mergedpdf")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16162478

复制
相关文章

相似问题

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