python - 在内存python中下载pdf

标签 python pdf memory save

我想在我的 Python 程序中打开一个 pdf。到目前为止,一切正常。

existing_pdf = PdfFileReader(file(path_to_pdf, "rb"))

现在我从我的本地磁盘打开 pdf,但我希望它从 Internet 获取 pdf,而不是从我的本地驱动器打开它。请注意,我不想保存 existing_pdf,一旦我从互联网上获取它,我将对其进行操作然后保存。

我想我需要 BytesIO + urllib2,但我想不出来,有人可以帮我吗?

假设我想创建变量:existing_pdf 内容为 http://tug.ctan.org/tex-archive/macros/latex/contrib/logpap/example.pdf在其中,但我不想先将该文件下载到磁盘然后再打开它。我想将它下载到“内存中”并创建变量 existing_pdf,稍后我可以在我的程序中对其进行修改。

编辑:

  response=urllib2.urlopen("URL")
  pdf_file = BytesIO(response.read())

  existing_pdf = PdfFileReader(pdf_file)

它只是挂起并且永远不会完成 PdfFileReader(pdf_file)

  ....
  existing_pdf = PdfFileReader(pdf_file)
  File "C:\Python27\lib\site-packages\pyPdf\pdf.py", line 374, in __init__
  self.read(stream)
  File "C:\Python27\lib\site-packages\pyPdf\pdf.py", line 705, in read
  line = self.readNextEndLine(stream)
  File "C:\Python27\lib\site-packages\pyPdf\pdf.py", line 870, in readNextEndLine
  line = x + line

最佳答案

你试过requests package了吗? ?

import requests
from StringIO import StringIO
r = requests.get(URL)
pdf_file = StringIO(r.content)
existing_pdf = PdfFileReader(pdf_file)

这对我有用:

import os
import urllib2
from io import BytesIO
URL = "http://tug.ctan.org/tex-archive/macros/latex/contrib/logpap/example.pdf"
response=urllib2.urlopen(URL)
p = BytesIO(response.read())
p.seek(0, os.SEEK_END)
print p.tell()
# 79577

关于python - 在内存python中下载pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42549236/

相关文章:

python - Pandas 矢量化而不是两个数据帧的循环

python - 在 pygame 窗口中创建工具栏

java - iText - 填写包含 JavaScript 操作的 XFA 表单

ruby - 匹配上传的 PDF 文档的副本?

c# - LINQ Join 的内存使用情况是多少?

c - 如何在 Visual Studio 2005 中释放动态分配的内存

python - 加速 Python

python - 确定 tf.data.Dataset Tensorflow 中的记录数

java - PdfBox 从 pdf 中提取具有相同字体系列的文本

c - 内存集和 SIGSEGV