10

我如何从 url 而不是从磁盘打开 pdf

就像是

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

我想从网上打开几个文件并下载所有文件的合并。

4

3 回答 3

20

我认为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()
于 2012-03-17T16:05:21.410 回答
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"))
于 2012-03-17T16:09:10.520 回答
0

对于python 3.8

import io
from urllib.request import Request, urlopen

from PyPDF2 import PdfFileReader


class GetPdfFromUrlMixin:
    def get_pdf_from_url(self, url):
        """
        :param url: url to get pdf file
        :return: PdfFileReader object
        """
        remote_file = urlopen(Request(url)).read()
        memory_file = io.BytesIO(remote_file)
        pdf_file = PdfFileReader(memory_file)
        return pdf_file
于 2021-08-06T00:39:42.947 回答