从 OOo Writer 自动导出公式

从 OOo Writer 自动导出公式

我经常给报纸写文章,但由于公式并不经常出现,所以他们无法处理它们,所以我必须将它们以图像的形式提供。

我写了一篇文章,里面有大约 50 个带编号的公式,还有许多公式嵌入在正文中。我不可能把它们都截屏,那样太疯狂了。

有没有办法可以自动化以下过程(或至少是其部分):

  • 从 OOo 文档中提取所有公式(我不需要编号,公式本身就足够了)
  • 以指定的 DPI 或尺寸渲染它们?

最绝望的计划是手动解压 zip 文件并深入研究 XML,但我希望也不会发生这种情况。

答案1

Math 组件无法轻松导出图像。因此,请将其复制并粘贴到 LibreOffice Draw 中,然后从那里导出 PNG 文件。

以下是一些用于枚举数学公式对象的代码。

Sub ExportFormulasAsImages
    oDoc = ThisComponent
    oEmbed = oDoc.getEmbeddedObjects()
    filenum = 0
    For i = 0 To oEmbed.getCount() - 1
        oObj = oEmbed.getByIndex(i)
        If oObj.supportsService("com.sun.star.text.TextEmbeddedObject") Then
            If oObj.CLSID = "078B7ABA-54FC-457F-8551-6147e776a997" Then
                oFormulaDoc = oObj.getEmbeddedObject().Parent
                oDrawPage = oFormulaDoc.DrawPage(0)
                filenum = filenum + 1
                sURL = "file:///path/formula" & Format(filenum, "00") & ".jpg"
            End If
        End If
    Next
    MsgBox "Exported " & filenum & " formulas as images."
End Sub

复制到 Draw 然后导出的示例代码位于https://ask.libreoffice.org/en/question/141898/macro-for-saving-sheet-as-single-image-in-calc/

我把编写代码的具体方法留给了您,但是如果您遇到困难,请随时在 StackOverflow 或 ask.libreoffice.org 上发帖。发布您迄今为止尝试过的代码。

编辑

开始学习 LibreOffice 宏的一个好地方是http://www.pitonyak.org/oo.php

要发现对象可以做什么,可以使用自省工具,例如磁共振成像或者Xray工具

至于 API 文档,编写宏时请忽略 SwX 前缀。这些文档与自省工具一起使用时很有用。单独来看,由于继承结构,它们很难阅读。

录制并不是开始学习如何编写宏的好方法。但是,它对于某些调度程序操作(例如复制/粘贴)很有用。为此,启用实验性功能工具 -> 选项 -> 高级. 在 LO 6 中有一个特定的复选框启用宏录制。 然后工具 -> 宏 -> 录制宏

还有一件事要考虑:对于严肃的工作,Python UNO通常是编写宏的更好方法,例如,由于数据结构、正则表达式和文件处理。(C++ 是可行的,但对大多数宏来说不是那么好。Java 是一个可靠的选择,它紧密遵循 UNO API,但使一些事情变得比需要的更困难)。

相关内容