【问题标题】:How to trigger AutoFit / SetOptimalHeight in LibreOffice Calc programmatically?如何以编程方式在 LibreOffice Calc 中触发 AutoFit / SetOptimalHeight?
【发布时间】:2021-02-27 19:36:51
【问题描述】:

我正在使用 unoconv 转换 XLSX => PDF。我需要 LibreOffice 来包装文本并根据 XLSX 文件的内容动态增加行高。有没有办法以编程方式执行此操作,可能在 unoconv/soffice 级别?

【问题讨论】:

    标签: libreoffice openoffice.org libreoffice-calc unoconv


    【解决方案1】:

    对我们有用的唯一方法是修补 unoconv,以便它在打开文档后立即执行以下操作:

    • 全选
    • 触发选择的最佳行高

    从python来看,是这样的:

    frame = document.CurrentController.Frame
    dispatcher = self.unosvcmgr.createInstanceWithContext("com.sun.star.frame.DispatchHelper", self.context)
    dispatcher.executeDispatch(frame, ".uno:SelectAll", "", 0, ())
    dispatcher.executeDispatch(frame, ".uno:SetOptimalRowHeight", "", 0, UnoProps(aExtraHeight=0))
    

    补丁文件在这里:https://gist.github.com/ldiqual/065aada05cfb50443bc67fc3ae99ea14

    这就是它在 Docker 中的应用方式:

    ENV UNO_URL https://raw.githubusercontent.com/unoconv/unoconv/master/unoconv
    COPY ./unoconv.patch /tmp/unoconv.patch
    RUN curl -Ls ${UNO_URL} -o /usr/local/bin/unoconv \
      && patch /usr/local/bin/unoconv /tmp/unoconv.patch \
      && chmod +x /usr/local/bin/unoconv \
      && rm /tmp/unoconv.patch \
    

    【讨论】:

      猜你喜欢
      • 2017-07-15
      • 2014-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-09
      • 1970-01-01
      相关资源
      最近更新 更多