如何使用python将pdf文件打印到stdout?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何使用python将pdf文件打印到stdout?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1452字,纯文字阅读大概需要3分钟。
内容图文
![如何使用python将pdf文件打印到stdout?](/upload/InfoBanner/zyjiaocheng/767/b33f84622a5246cba2e4c79d14950226.jpg)
正确的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}).
编辑:
*我正在寻找python3和Linux / Unix系统的解决方案,而不是Windows.
*我需要知道如何在python中执行此操作,因为它实际上是完全用python编写的更大项目的一部分
解决方法:
答案实际上是使用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())
内容总结
以上是互联网集市为您收集整理的如何使用python将pdf文件打印到stdout?全部内容,希望文章能够帮你解决如何使用python将pdf文件打印到stdout?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。