unoconv with --stdin 不工作
unoconv with --stdin not working
我正在使用 unoconv
将 docx
转换为 pdf
。只要我通过文件名传递文档,一切都很好:
$ unoconv -f pdf --stdout test.docx
但是一旦我使用 --stdin
它就不再起作用了:
$ unoconv -f pdf --stdin --stdout < test.docx
Traceback (most recent call last):
File "/usr/bin/unoconv", line 1275, in <module>
main()
File "/usr/bin/unoconv", line 1185, in main
inputfn = sys.stdin.read()
File "/usr/lib/python3.5/codecs.py", line 321, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xad in position 41: invalid start byte
这是同一个文件。为什么这行不通?
我认为问题在于 --stdin
选项并不像人们认为的那样。
在错误消息中,第 1185 行的变量名看起来很可疑:
inputfn = sys.stdin.read()
确实,检查 source code,似乎从 STDIN 读取的文本被解释为文件 name,而不是文件内容。
但是,文档 (man unoconv
) 具有误导性:
--stdin
Read input file from stdin (filenames are ignored if provided)
这听起来不像是将输入解释为文件名。
我建议你 file a bug report 关于这个(也许首先检查是否已经有)。
我正在使用 unoconv
将 docx
转换为 pdf
。只要我通过文件名传递文档,一切都很好:
$ unoconv -f pdf --stdout test.docx
但是一旦我使用 --stdin
它就不再起作用了:
$ unoconv -f pdf --stdin --stdout < test.docx
Traceback (most recent call last):
File "/usr/bin/unoconv", line 1275, in <module>
main()
File "/usr/bin/unoconv", line 1185, in main
inputfn = sys.stdin.read()
File "/usr/lib/python3.5/codecs.py", line 321, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xad in position 41: invalid start byte
这是同一个文件。为什么这行不通?
我认为问题在于 --stdin
选项并不像人们认为的那样。
在错误消息中,第 1185 行的变量名看起来很可疑:
inputfn = sys.stdin.read()
确实,检查 source code,似乎从 STDIN 读取的文本被解释为文件 name,而不是文件内容。
但是,文档 (man unoconv
) 具有误导性:
--stdin
Read input file from stdin (filenames are ignored if provided)
这听起来不像是将输入解释为文件名。
我建议你 file a bug report 关于这个(也许首先检查是否已经有)。