2012-03-17 28 views
2

打開PDF格式的URL我將如何打開PDF的網址,而不是從磁盤與pyPdf

喜歡的東西

input1 = PdfFileReader(file("http://example.com/a.pdf", "rb")) 

我想從網絡打開多個文件和下載的所有文件的合併。

回答

10

我認爲urllib2會得到你想要的。

from urllib2 import Request, urlopen 
from pyPdf import PdfFileWriter, PdfFileReader 
from StringIO import StringIO 

url = "http://www.silicontao.com/ProgrammingGuide/other/beejnet.pdf" 
writer = PdfFileWriter() 

remoteFile = urlopen(Request(url)).read() 
memoryFile = StringIO(remoteFile) 
pdfFile = PdfFileReader(memoryFile) 

for pageNum in xrange(pdfFile.getNumPages()): 
     currentPage = pdfFile.getPage(pageNum) 
     #currentPage.mergePage(watermark.getPage(0)) 
     writer.addPage(currentPage) 


outputStream = open("output.pdf","wb") 
writer.write(outputStream) 
outputStream.close() 
+0

我得到AttributeError的:「海峽」對象有沒有屬性「尋求」 – meadhikari 2012-03-17 16:38:07

+1

@meadhikari,我們對此深感抱歉現在已經修復了。 – John 2012-03-17 17:15:53

+0

當我嘗試寫入文件 outputStream = file(「output.pdf」,「wb」)我不斷收到「AttributeError:addinfourl實例沒有__call__方法 」任何幫助將不勝感激 – meadhikari 2012-03-17 17:59:00

4

好了,你可以先單獨下載的PDF,然後用pypdf讀它

import urllib 

url = 'http://example.com/a.pdf' 
webFile = urllib.urlopen(url) 
pdfFile = open(url.split('/')[-1], 'w') 
pdfFile.write(webFile.read()) 
webFile.close() 
pdfFile.close() 

base = os.path.splitext(pdfFile)[0] 
os.rename(pdfFile, base + ".pdf") 

input1 = PdfFileReader(file(pdfFile, "rb")) 
+0

嘿,這行是什麼文件base = os.path.splitext(thisFile)[0] – meadhikari 2012-03-17 16:33:28

+1

對不起,這是一個錯誤,它應該是pdfFile(下載文件的絕對路徑) – Switch 2012-03-17 16:41:23