一份正确的 PDF 文件已经由脚本生成(不幸的是,该脚本的输出不能直接写入标准输出 stdout)。假设文件名为“myfile.pdf”。
我想要将精确的 PDF 内容打印到标准输出 stdout 中(中间不做任何处理)。
为了测试这一点,我编写了这个简短的 read_pdf.py 脚本:
我使用
当然,问题在于输出结果是由不能用作pdf文件的
我想要将精确的 PDF 内容打印到标准输出 stdout 中(中间不做任何处理)。
为了测试这一点,我编写了这个简短的 read_pdf.py 脚本:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
with open('myfile.pdf', mode='rb') as pdf_file:
for line in pdf_file:
print(str(line))
我使用
'rb'
模式,因为在文本模式下读取会导致UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 10: invalid continuation byte
错误。因此,似乎没有其他选择(如果文本模式无法工作,则使用二进制模式)。当然,问题在于输出结果是由不能用作pdf文件的
b'blablabla'
行组成的。为了检查它,我将read_pdf.py
重定向到一个文件中,并尝试使用pdf阅读器打开它,当然没有成功。$ ./read_pdf.py > test_output.pdf
$ evince test_output.pdf
Syntax Error: Couldn't find trailer dictionary
Syntax Error: Couldn't read xref table
Syntax Error: Couldn't find trailer dictionary
Syntax Error: Couldn't read xref table
那么,正确的做法是什么呢?我没有查看任何专用的pdf库,因为这似乎不是必要的。我希望能够在不导入pdf库的情况下读取和打印正确的内容。
chardet.detect(pdf_file.read())
无法帮助解决问题(它返回了{'encoding': None, 'confidence': 0.0}
)。
编辑: * 我正在寻找适用于Python 3和Linux/Unix系统的解决方案,而非Windows。 * 我需要知道如何使用Python完成此操作,因为它实际上是完全由Python编写的一个更大项目的一部分。
cat some.pdf
呢? - armandino