一个正确的pdf文件已经由脚本创建(不幸的是,其输出不能直接写入标准输出)。说这个文件的名字是'myfile.pdf'。如何使用python打印PDF文件到标准输出?
我想打印确切的PDF内容到标准输出。 (中间没有处理)。
为了测试这一点,我写了这个简短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
。所以,它看起来没有其他选择(如果文本模式不起作用,那么二进制模式)。
当然现在的问题是,输出由b'blablabla'
线组成,不能用作pdf文件。要检查它,我重定向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}
)。
编辑: *我正在寻找python3和Linux/Unix系统的解决方案,而不是windows。 *我需要知道如何在Python中执行此操作,因为它实际上是一个完全由python编写的较大项目的一部分
一你有什么理由不能'猫some.pdf'? – armandino
可能的重复:http://arrowover.com/questions/2374427/python-2-x-write-binary-output-to-stdout –
@armandino,因为它实际上是一个更大的项目的一部分,完全用Python编写 – zezollo