Fórmulas de exportação automatizadas do OOo Writer

0

Frequentemente estou escrevendo artigos para jornais, mas como as fórmulas não aparecem com frequência, elas não têm como processá-las e eu tenho que fornecê-las como imagens.

Eu escrevi um artigo, que tem cerca de 50 fórmulas numeradas e um número de fórmulas incorporadas no texto. Não há nenhuma maneira de capturar todos eles, isso será uma loucura.

Existe uma maneira de automatizar o processo a seguir (ou pelo menos suas partes):

  • Extraia todas as fórmulas do documento OOo (não preciso de numeração, as próprias fórmulas serão suficientes)
  • Renderizá-los com DPI ou tamanho especificado?

O plano desesperado seria descompactar manualmente o arquivo zip e cavar em XMLs, mas espero que isso não aconteça.

    
por Spook 10.05.2018 / 23:12

1 resposta

0

O componente Math não exporta imagens facilmente. Então, copie e cole no LibreOffice Draw e exporte um arquivo PNG de lá.

Aqui está um código para enumerar os objetos da fórmula matemática.

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

Exemplo de código para copiar no Draw e, em seguida, exportar está em link .

Eu deixei para você resolver exatamente como escrever o código, mas fique à vontade para postar no StackOverflow ou no ask.libreoffice.org se você ficar preso. Poste o código que você tentou até agora.

EDITAR :

Um bom lugar para começar a aprender sobre as macros do LibreOffice é o link .

Para descobrir o que os objetos podem fazer, use uma ferramenta de introspecção, como MRI ou XrayTool .

No que diz respeito aos documentos da API, ignore o prefixo SwX ao escrever macros. Esses documentos são úteis quando usados em conjunto com uma ferramenta de introspecção. Sozinhos, eles são difíceis de ler devido à estrutura de herança.

A gravação não é uma boa maneira de começar a aprender a escrever macros. No entanto, é útil para determinadas operações de despachante, como copiar / colar. Para fazer isso, Ativar recursos experimentais em Ferramentas - > Opções - > Avançado . Na LO 6 existe uma caixa de seleção específica Ativar gravação de macro . Então Ferramentas - > Macros - > Gravar Macro .

Mais uma coisa a considerar: Para trabalhos sérios, Python-UNO é geralmente uma maneira melhor de escrever macros , por causa de estruturas de dados, expressões regulares e manipulação de arquivos, por exemplo. (C ++ é possível, mas não é tão bom para a maioria das macros. O Java é uma escolha sólida e se atém à UNO API, mas torna algumas coisas mais difíceis do que o necessário).

    
por 11.05.2018 / 04:23