unoconv с --stdin не работает

Я использую 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

Это тот же файл. Почему это не работает?

Вот файл: https://nofile.io/f/bKz1zWf745K/test.docx

1 ответ

Решение

Я думаю, что проблема в том, что --stdin Опция не делает то, что, вероятно, думает, что делает.

В сообщении об ошибке имя переменной в строке 1185 выглядит подозрительно:

inputfn = sys.stdin.read()

И действительно, при проверке исходного кода кажется, что текст, считываемый из STDIN, интерпретируется как имя файла, а не содержимое файла.

Тем не менее, документация (man unoconv) вводит в заблуждение:

--stdin
Чтение входного файла из stdin (имена файлов игнорируются, если они указаны)

Это действительно не похоже на интерпретацию ввода как имени файла.

Я предлагаю вам подать отчет об ошибке (возможно, сначала проверьте, есть ли уже).

Другие вопросы по тегам