使用debian 9.5、python 3.5、libreoffice 5.2、x86 Arch。
我有一个22页的Word文件(docx),其中包含几个图表。
使用bash从终端运行时,以下命令正常工作,即生成一个包含22页的PDF文件:
/usr/bin/libreoffice --headless --convert-to pdf --outdir /tmp/docx5/ /tmp/docx5/output.docx
输出:
使用过滤器转换/tmp/docx5/output.docx->/tmp/docx5//output.pdf
:writer_pdf_导出
问题是:使用subprocess.run从python执行的同一个外部命令只生成一个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_导出
完成进程(args='/usr/bin/libreoffice--headless--convert to
pdf--outdir/tmp/docx5//tmp/docx5/output.docx',返回代码=0)
显然,PDF生成是成功的,但只转换了docx文件的第一页。
当从python开始的libreoffice遇到第一个图表时,PDF的生成似乎终止了。
LyBrice是否需要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_导出
完成进程(args='/usr/bin/libreoffice
-env:userinstallation=file:///home/marco/--headless--convert to pdf--outdir/tmp/docx5//tmp/docx5/output.docx',returncode=0)
关于如何指定Suruh命令行参数,LeBrice可以找到它需要的Java运行时环境的任何想法?