с использованием Debian 9.5, Python 3.5, libreoffice 5.2, x86_64 arch.
У меня есть файл слов (docx) из 22 страниц, который содержит несколько диаграмм.
При запуске из терминала с использованием bash, следующая команда работает правильно, т. Е. Генерирует PDF-файл из 22 страниц:
/usr/bin/libreoffice --headless --convert-to pdf --outdir /tmp/docx5/ /tmp/docx5/output.docx
выход:
конвертировать /tmp/docx5/output.docx -> /tmp/docx5//output.pdf с использованием фильтра
: writer_pdf_Export
Проблема заключается в следующем: та же самая внешняя команда, выполняемая из python с использованием subprocess.run, создает pdf-файл только из одной страницы вместо 22 страниц без сообщения об ошибке.
Другие экземпляры libreoffice не запущены.
cmd = '/usr/bin/libreoffice --headless --convert-to pdf --outdir /tmp/docx5/ /tmp/docx5/output.docx'
print(subprocess.run(cmd, shell=True, check=True))
это вывод этого скрипта python:
конвертировать /tmp/docx5/output.docx -> /tmp/docx5//output.pdf с использованием фильтра
: writer_pdf_Export
CompletedProcess (args = '/ usr / bin / libreoffice --headless --convert-to
pdf --outdir / tmp / docx5 / /tmp/docx5/output.docx ', код возврата = 0)
По-видимому, генерация PDF была успешной, но была преобразована только первая страница файла DOCX.
Кажется, что генерация pdf прекращается, когда libreoffice, запущенный из python, встречает первый график.
Требуется ли libreoffice среда выполнения java для генерации pdf?
Может ли быть проблема с безголовыми операциями libreoffice?
Есть подсказка?
Обновление:
добавлена опция 'env: UserInstallation', при запуске из python модифицированный скрипт:
cmd = '/usr/bin/libreoffice -env:UserInstallation=file:///home/marco/ --headless --convert-to pdf --outdir /tmp/docx5/ /tmp/docx5/output.docx'
print(subprocess.run(cmd, shell=True, check=True))
Вывод следующий, теперь он содержит предупреждение о том, что не найдена среда выполнения Java:
javaldx: не удалось найти среду выполнения Java!
Предупреждение: не удалось прочитать путь из javaldx
конвертировать /tmp/docx5/output.docx -> /tmp/docx5//output.pdf, используя фильтр
: writer_pdf_Export
CompletedProcess (арг = '/ USR / бен / LibreOffice
-env: UserInstallation = file: /// home / marco / --headless --convert-to pdf --outdir / tmp / docx5 / /tmp/docx5/output.docx ', код возврата = 0)
Есть идеи о том, как указать параметры командной строки, где libreoffice может найти необходимую среду выполнения Java?