gpt4 book ai didi

python - 将pdf文件与pypdf合并

转载 作者:行者123 更新时间:2023-11-28 18:54:05 26 4
gpt4 key购买 nike

我正在编写一个脚本来解析互联网站点 (maya.tase.co.il) 的链接、下载 pdf 文件并合并它们。它主要工作,但合并会根据文件给我不同类型的错误。我似乎无法弄清楚为什么。我删除了相关代码并仅针对导致问题的两个特定文件构建了一个测试。该脚本使用 pypdf,但我愿意尝试任何可行的方法。有些文件已加密,有些未加密。

def is_incry(pdf):
from pyPdf import PdfFileWriter, PdfFileReader
input=PdfFileReader(pdf)
try:
input.getNumPages()
return input
except:
input.decrypt("")
return input

def merg_pdf(to_keep,to_lose):
import os
from pyPdf import PdfFileWriter, PdfFileReader
if os.path.exists(to_keep):
in1=file(to_keep, "rb")
in2=file(to_lose, "rb")
input1 = is_incry(in1)
input2 = is_incry(in2)
output = PdfFileWriter()
loop1=input1.getNumPages()
for i in range(0,loop1):
output.addPage(input1.getPage(i))#
loop2=input2.getNumPages()
for i in range(0,loop2):
output.addPage(input2.getPage(i))#
outputStream = file("document-output.pdf", "wb")
output.write(outputStream)
outputStream.close()
pdflen=loop1+loop2
in1.close()
in2.close()
os.remove(to_lose)
os.remove(to_keep)
os.rename("document-output.pdf",to_keep)
else:
os.rename(to_lose,to_keep)
in1=file(to_keep, "rb")
input1 = PdfFileReader(in1)
try:
pdflen=input1.getNumPages()
except:
input1.decrypt("")
pdflen=input1.getNumPages()
in1.close()
#input1.close()
return pdflen


def test():
import urllib
urllib.urlretrieve ('http://mayafiles.tase.co.il/RPdf/487001-488000/P487028-01.pdf', 'temp1.pdf')
urllib.urlretrieve ('http://mayafiles.tase.co.il/RPdf/488001-489000/P488170-00.pdf', 'temp2.pdf')
merg_pdf('temp1.pdf','temp2.pdf')

test()

我感谢所有花时间阅读本文的人。铝。

最佳答案

我曾经写过一个复杂的 PDF 生成/合并的东西,我现在已经开源了。

你可以看看:https://github.com/becomingGuru/nikecup/blob/master/reg/models.py#L71

def merge_pdf(self):
from pyPdf import PdfFileReader,PdfFileWriter

pdf_file = file_names['main_pdf']%settings.MEDIA_ROOT
pdf_obj = PdfFileReader(open(pdf_file))

values_page = PdfFileReader(open(self.make_pdf())).getPage(0)

mergepage = pdf_obj.pages[0]
mergepage.mergePage(values_page)

signed_pdf = PdfFileWriter()
for page in pdf_obj.pages:
signed_pdf.addPage(page)

signed_pdf_name = file_names['dl_done']%(settings.MEDIA_ROOT,self.phash)
signed_pdf_file = open(signed_pdf_name,mode='wb')

signed_pdf.write(signed_pdf_file)
signed_pdf_file.close()
return signed_pdf_name

然后它就像一个魅力。希望对您有所帮助。

关于python - 将pdf文件与pypdf合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6737409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com