加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何使用python将pdf文件打印到stdout?

发布时间:2020-12-20 13:13:00 所属栏目:Python 来源:网络整理
导读:正确的pdf文件已由脚本创建(不幸的是,其输出无法直接写入stdout).假设文件的名称是’myfile.pdf’. 我想将精确的pdf内容打印到stdout. (之间没有处理). 为了测试这个,我写了这个简短的read_pdf.py脚本: #!/usr/bin/env python3# -*- coding: utf-8 -*-with
正确的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())

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读