【问题标题】:PDF files downloaded with Python cannot be opened in acrobat使用 Python 下载的 PDF 文件无法在 acrobat 中打开
【发布时间】:2012-06-22 18:23:28
【问题描述】:

我有一个小 Python 脚本,我用它来下载一大堆 PDF 文件以进行存档。我遇到的问题是,当我下载文件时,它们在正确的标题下正确显示,但它们的大小错误,Acrobat 无法打开它们,并显示错误消息 Out of memoryInsufficient data for an image或其他一些任意 Acrobat 错误。在文本编辑器中查看页面内容看起来有点像 PDF 文档,我的意思是总体上难以理解,但有一些文本和标记片段,包括 PDF 标识符。

下载文件的代码是这样的:

def download_file( file_id):
    folder_path = ".\\pdf_files\\"
    file_download="http://myserver/documentimages.asp?SERVICE_ID=RETRIEVE_IMAGE&documentKey="    
    file_content = urllib.urlopen(file_download+file_id, proxies={})
    file_local = open( folder_path + file_id + '.pdf', 'w' )
    file_local.write(file_content.read())
    file_content.close()
    file_local.close()

如果通过浏览器下载相同的文件,它看起来不错,但在磁盘上也会更大。我猜测问题可能与保存文件时的编码有关?

【问题讨论】:

    标签: python pdf urllib2


    【解决方案1】:

    你需要把它写成二进制文件,所以:

    file_local = open( folder_path + file_id + '.pdf', 'wb' )

    【讨论】:

    • 是的。这样做的原因是在文本模式下,Python 会修改换行符以使它们与您平台的行尾标准相匹配。在 Windows 上,这会将每个 LF 更改为 CR+LF。
    • @glenatron 使用 urllib.urlretrieve 将您的代码减少到一行
    • @JonClements 谢谢,这是我第一次涉足 Python,所以我还不知道如何以惯用方式使用它。
    猜你喜欢
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    相关资源
    最近更新 更多