包包凯 2024-02-27 10:44 采纳率: 0%
浏览 357
已结题

libreoffice导出PPTX到PDF中的错误换行问题

现象

在使用libreoffice转换WPS文档到pdf时,有些文字间距变大导致原本是一行的文字换成了两行,但是在PDF中是无法修改的。

WPS中:

img

转换后:

img

涉及的代码

libreoffice --headless --convert-to pdf:writer_pdf_Export abc.pptx  --outdir out.pdf

os: ubuntu 22.04

分析可能的原因

在libreoffice的图形界面中,直接打开abc.pptx可以看到,显示出来的结果和最终错误的pdf的显示效果是完全 一致的,此时选择导出pdf,会出现错误换行。
如果选中这一行文字,右键->段落,把这个勾掉:

img

显示效果就和WPS一致了,导出也是正常的。

所以分析主要是由于:libreoffice中,会默认自动在中文和非中文之间增加一个间距,而WPS不会,所以WPS中排版正常的文件,在libreoffice中就会出现错误换行的问题。

希望的结果

由于这个转换是希望做成自动化的服务,所以不可能每次导出都是在图形界面手动操作,所以希望能够让libreoffice默认把这个功能关掉(目前没找到可以关的地方),或者在转换输出的时候禁用这个功能。

  • 写回答

24条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-02-27 10:44
    关注

    引自免费微信小程序:皆我百晓生

    在LibreOffice中,确实存在一个与亚洲文字间距相关的设置,这可能导致在转换文档时出现错误的换行。您遇到的问题是由于LibreOffice默认启用了“在亚洲文字与非亚洲文字之间添加间隙”的功能。

    要在命令行模式下禁用此功能以避免自动增加间距,并确保转换过程中不出现意外换行,目前LibreOffice的命令行工具soffice并不直接支持通过命令行参数关闭这一特定选项。但是,可以通过修改LibreOffice的配置文件来实现全局禁用该功能:

    1. 首先,找到或创建 LibreOffice 的用户配置目录(通常位于 ~/.config/libreoffice/4/user/registrymodifications.xcu)。

    2. 打开这个XML配置文件并编辑,在 <oor:component-data> 标签内部添加如下内容:

    <node oor:name="org.openoffice.Office.Common/TextAutoSpacing">
      <prop oor:name="AsianOptions">
        <value>false</value>
      </prop>
    </node>
    

    这意味着禁用了亚洲文字的自动间距。保存文件后重启LibreOffice服务或重新打开终端执行转换命令。

    然而,由于每次启动新的LibreOffice进程时可能都会重置配置,上述方法对于自动化服务来说可能不是最佳解决方案。若需要在自动化脚本中处理这个问题,一种可能的方法是编写一个临时修改配置、执行转换、然后恢复配置的脚本。但由于LibreOffice本身设计上没有直接提供命令行参数来调整这个特定设置,所以这种方法会较为复杂且依赖于对LibreOffice配置文件的具体操作。

    总之,针对您的需求,目前并没有直接通过命令行参数解决这一问题的简单方法,您可能需要寻求更复杂的脚本化解决方案或考虑其他第三方转换工具。同时,建议在LibreOffice社区论坛或其官方bug追踪系统中提交此问题,请求开发团队提供一个方便通过命令行控制该选项的机制。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月4日
  • 赞助了问题酬金50元 2月27日
  • 创建了问题 2月27日