Pular para o conteúdo principal

Exportar ou Salvar como PDF em LibreOffice Calc usando Macro

Este tutorial foi retirado do site Debugpoint, não mudei nada nenhuma linha de comando, apenas traduzir a explicação do tutorial e espero que ajudem a todos. 

Este tutorial irá mostrar como salvar no LibreOffice Calc diretamente como um arquivo PDF usando macro básico. Na tarefa de automação muitos esse recurso simples e necessária.

Escrevendo o Macro

Vamos chamar a função como "ExportToPDF ()" que vamos realizar todo o processo.
Primeiro defina dois objetos que possuem o documento Calc e uma expedição para executar ações.
 

dim document as object
dim dispatcher as object

document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")


 Agora crie um arquivo vazio de usar a função "Open" do base. Note-se que o caminho é o caminho do sistema de arquivos. Assim, temos o caminho prefixado com "file: //". Uma vez que o arquivo é criado, feche o arquivo.

path ="file:///home/arindam/sheet1.pdf"
Open path For Append As #1
Close #1


Agora, criar uma matriz de tamanho 1 para segurar o valor da propriedade para exportação, ou pdf. Em seguida, preencha a propriedade na matriz de nome "URL" com o caminho do arquivo que acabamos de criar. 


dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///home/arindam/sheet1.pdf" 


Finalmente chamar o método executeDispatch para colocar o conteúdo sheet1 ao pdf e salvar. 
 
dispatcher.executeDispatch(document, ".uno:ExportDirectToPDF", "", 0, args1()) 

Isto completa o código. 

A função completa está presente abaixo. 

Sub ExportToPDF()
   dim document as object
   dim dispatcher as object

   document = ThisComponent.CurrentController.Frame
   dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
   ' change the path below as per your needs
   path ="file:///home/arindam/sheet1.pdf"
   Open path For Append As #1
   Close #1

   dim args1(0) as new com.sun.star.beans.PropertyValue
   args1(0).Name = "URL"
   args1(0).Value = "file:///home/arindam/sheet1.pdf"  ' change the path below as per your needs

   dispatcher.executeDispatch(document, ".uno:ExportDirectToPDF", "", 0, args1())
End Sub 


Execute o salvar como função pdf 

Abrir calc LibreOffice e criar um macro e colocar a função acima. Faça qualquer coisa no sheet1. Para este exemplo, eu escrevi algo assim - 

LibreOffice CALC Save As PDF Macro - Sheet
LibreOffice CALC Salvar como PDF Macro - Folha 

Execute o macro

Você pode ver todo o conteúdo sheet1 é salvo no diretório especificado mencionado na macro acima. Aqui está o conteúdo do pdf que é criado usando essa macro.

LibreOffice Save As PDF Macro
LibreOffice Salvar como PDF Macro

Comentários