我正在使用 unoconv 转换 XLSX => PDF。我需要 LibreOffice 来包装文本并根据 XLSX 文件的内容动态增加行高。有没有办法以编程方式执行此操作,也许在 unoconv/soffice 级别?
问问题
105 次
1 回答
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 \
于 2021-02-27T19:36:51.400 回答