如何使用python将pdf文件打印到stdout?
正确的pdf文件已由脚本创建(不幸的是,其输出无法直接写入stdout).假设文件的名称是’myfile.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’编解码器无法解码位置10中的字节0xd0:无效的连续字节.所以,它看起来没有任何其他替代方案(如果文本模式不起作用,那么二进制模式). 当然,问题是输出由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’:无,’置信’:0.0}). 编辑: 解决方法
答案实际上是使用sys.stdout.buffer.write()而不是print(),以及pdf_file.read():
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import sys with open('myfile.pdf',mode='rb') as pdf_file: sys.stdout.buffer.write(pdf_file.read()) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |