python - 警告:无法从 javaldx 读取路径
问题描述
在 ubuntu 上使用 Libreoffice 转换文件时出现错误:
CompletedProcess(args=['soffice', '--headless', '--convert-to', 'txt:Text', '/var/www/Project/temp/e4bac2c2e7c04eb79cfa522967a30dd3.docx', '--outdir', '/var/www/Project/temp/'], returncode=77, stdout=b'', stderr=b'javaldx failed!\nWarning: failed to read path from javaldx\n')
使用子流程:
process = subprocess.run(['soffice', '--headless', '--convert-to', 'txt:Text', path_docx, '--outdir', settings.TEMP_ROOT], stdout=subprocess.PIPE, stderr=subprocess.PIPE,超时=超时)
~# java --version
openjdk 11.0.6 2020-01-14 OpenJDK Runtime Environment (build 11.0.6+10-post-Ubuntu-1ubuntu118.04.1) OpenJDK 64-Bit Server VM (build 11.0.6+10-post-Ubuntu-1ubuntu118.04.1,混合模式,共享)
解决方案
好的,找到了解决方案:
如果您使用非 root 用户在 headless 中使用 libreoffice,尝试将 docx 转换为 pdf,则会出现此错误:
javaldx failed!
Warning: failed to read path from javaldx
您的用户没有设置主文件夹,或者主文件夹不可写。我刚刚从直接调用 libreoffice 切换到通过这样的 shell 脚本调用它:
export HOME=/opt/fhir-services && /usr/lib/libreoffice/program/./soffice --headless --invisible --convert-to pdf --outdir /opt/fhir-services /opt/fhir-services/tmp.docx
tomcat8 是这个文件夹的所有者,现在转换工作。
推荐阅读
- entity-framework-core - 1 对 1 关系如何在不进行循环的情况下包含嵌套实体
- javascript - 使用多个日期属性对对象数组进行排序
- google-cloud-platform - Google Secret Manager 中的标签有什么用?他们的预期目的是什么?
- apache-nifi - JOLT - 有条件的动态默认值
- android - .gradle\caches\6.7.1\file-changes\last-build.bin(访问被拒绝)
- unit-testing - 是否可以在模拟不存在的类时键入提示参数?
- reactjs - 在下拉选择选项的滚动上添加事件侦听器并使用 react-async-select 获取数据
- git - 在 BitBucket 上可视化笔记本更改
- python - 在字符串的新行中打印列表中的每个字典
- rabbitmq - Micronaut 和 RabbitMQ