4

我正在使用unoconv转换docxpdf. 只要我通过文件名传递文档,一切都很好:

$ 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

4

1 回答 1

7

我认为问题在于该--stdin选项并没有像人们认为的那样做。

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

inputfn = sys.stdin.read()

事实上,检查源代码,似乎从 STDIN 读取的文本被解释为文件,而不是文件内容。

但是,文档 ( man unoconv) 具有误导性:

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

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

我建议你提交一份关于这个的错误报告(也许首先检查是否已经有一个)。

于 2018-02-23T22:10:06.997 回答