合并两个PDF

Lyn*_*nob 5 python pdf pdf-generation pypdf python-2.7

import PyPDF2 
import glob
import os
from fpdf import FPDF
import shutil

class MyPDF(FPDF): # adding a footer, containing the page number
    def footer (self):
        self.set_y(-15)
        self.set_font("Arial", Style="I", size=8)
        pageNum = "page %s/{nb}" % self.page_no()
        self.cell(0,10, pageNum, align="C")


if __name__ == "__main__":
    os.chdir("pathtolocation/docs/") # docs location
    os.system("libreoffice --headless --invisible --convert-to pdf *") # this converts everything to pdf
    for file in glob.glob("*"):
        if file not in glob.glob("*.pdf"):
            shutil.move(file,"/newlocation") # moving files we don't need to another folder

    # adding the cover and footer
    path = open(file, 'wb')
    path2 = open ('/pathtocover/cover.pdf')
    merger = PyPDF2.PdfFileMerger()
    pdf = MyPDF()

    for file in glob.glob("*.pdf"):
        pdf.footer()
        merger.merge(position=0, fileobj=path2)
        merger.merge(position=0, fileobj=path)
        merger.write(open(file, 'wb'))
Run Code Online (Sandbox Code Playgroud)

该脚本转换为pdf,在pdf和页脚中添加一个包含页码的封面,修复了一些问题,现在我最后一次运行它以查看它是否有效,这花费了太多时间,没有错误,我做了什么错误还是合并和添加页脚需要那么长时间?我正在处理3个文件,它转换得非常快。

异常输出

convert /home/projects/convert-pdf/docs/sample (1).doc ->
/home/projects/convert-pdf/docs/sample (1).pdf using writer_pdf_Export
Run Code Online (Sandbox Code Playgroud)

所以它正在转换和移动,我认为问题出在这里

   for file in glob.glob("*.pdf"):
        pdf.footer()
        merger.merge(position=0, fileobj=path2)
        merger.merge(position=0, fileobj=path)
        merger.write(open(file, 'wb'))
Run Code Online (Sandbox Code Playgroud)

由于我试图合并position=0position=0,不知道它虽然

pic*_*cus 4

这实际上作为注释更好,但我想显示代码。您需要在其中添加一些 try 块来捕获任何错误 - 这是您可以做的一些超级基本的事情。

import PyPDF2 
import glob
import os
from fpdf import FPDF
import shutil

class MyPDF(FPDF): # adding a footer, containing the page number
    def footer (self):
      try:
        self.set_y(-15)
        self.set_font("Arial", Style="I", size=8)
        pageNum = "page %s/{nb}" % self.page_no()
        self.cell(0,10, pageNum, align="C")
      except Exception, err:
        print "Error applying footer: {}".format(err)


if __name__ == "__main__":

  try:
    os.chdir("pathtolocation/docs/") # docs location
    os.system("libreoffice --headless --invisible --convert-to pdf *") # this converts everything to pdf
    for file in glob.glob("*"):
        if file not in glob.glob("*.pdf"):
            shutil.move(file,"/newlocation") # moving files we don't need to another folder

    # adding the cover and footer
    path = open(file, 'wb')
    path2 = open ('/pathtocover/cover.pdf')
    merger = PyPDF2.PdfFileMerger()
    pdf = MyPDF()
  except Exception, err:
    print "error setting up the pdf: {}".format(err)

    for file in glob.glob("*.pdf"):
      try:
        pdf.footer()
        merger.merge(position=0, fileobj=path2)
        merger.merge(position=0, fileobj=path)
        merger.write(open(file, 'wb'))
      except Exception, err:
        print "Error processing glob: {}".format(err)
Run Code Online (Sandbox Code Playgroud)