我正在寫一個腳本,解析一個互聯網網站(maya.tase.co.il)的鏈接,下載PDF文件併合並它們。它主要工作,但根據文件的不同,合併會帶來不同類型的錯誤。我似乎無法弄清楚爲什麼。我刪掉了相關的代碼,並且只針對導致問題的兩個特定文件構建了一個測試。腳本使用pypdf,但我願意嘗試任何可行的方法。有些文件是加密的,有些則不是。合併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()
我感謝任何人,甚至花時間閱讀本文。 Al。
我只能看到的是,如果你不能寫你的默認目錄 - 你可能會指定的OutputStream =文件的完整路徑(「/ tmp目錄/ document.pdf」,「WB」) 。我和pypdf完全一樣,並沒有任何問題(儘管我不處理加密的pdf)。 –
此腳本適用於大多數文件,但有些會給我錯誤。我不知道爲什麼第二個這裏不能合併。 – user850498