unoconv与--stdin无法正常工作

时间:2018-02-23 15:02:51

标签: encoding utf-8 stdin unoconv

我正在使用unoconvdocx转换为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

这是同一个文件。为什么这不起作用?

以下是文件:https://nofile.io/f/bKz1zWf745K/test.docx

1 个答案:

答案 0 :(得分:4)

我认为问题在于[attr.r]选项没有做到人们认为它做的事情。

在错误消息中,第1185行中的变量名称看起来可疑:

--stdin

确实,检查source code,似乎从STDIN读取的文本被解释为文件 name ,而不是文件内容。

但是,文档(inputfn = sys.stdin.read() )具有误导性:

  

- 标准输入
  从stdin读取输入文件(如果提供则忽略文件名)

这听起来并不像将输入解释为文件名。

我建议您file a bug report关于此事(可能先检查是否已有)。