一個正確的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