Libreoffice para PDF pelo Progress

Discussão em 'Progress 4GL' iniciado por Raviel, Dezembro 14, 2012.

  1. Raviel

    Raviel Sem Pontuação

    Bom dia pessoal,

    Estou precisando imprimir um documento do libreoffice em pdf, eu achei o mesmo comando em outra linguagem, mas no progress não estou conseguindo reproduzir, segue abaixo o programa que estou usando para teste.
    Alguém tem alguma ideia de como atribuir no 'CC' que é do tipo raw do progress o que o cara fez na outra linguagem no args2?

    Código:
    def var BrOffice as com-handle.
    def var Desktop as com-handle.
    def var Planilha as com-handle.
    def var Documento as com-handle.
    
    def var cc as raw.
    
    create "com.sun.star.ServiceManager" BrOffice.
    
    Desktop = BrOffice:createinstance("com.sun.star.frame.Desktop").
    
    /* Inicia um documento em branco */
    Documento = Desktop:loadComponentFromURL("private:factory/scalc","_blank",0,cc).
    
    /* Remove Planilhas padrao */
    do while Documento:getSheets:getCount > 1:
       Planilha = Documento:getSheets:getByIndex(1).
       Documento:getSheets:removeByName( Planilha:name ). 
    end.
    
    assign Planilha = Documento:getSheets:getByIndex(0).
           Planilha:name = "Minha Planilha".
    
    Planilha:GetCellByPosition(0,3):string = "Soma".
    Planilha:GetCellByPosition(0,4):string = "Media".
    Planilha:GetCellByPosition(0,5):string = "Maximo".
    Planilha:GetCellByPosition(0,6):string = "Minimo".
    Planilha:GetCellByPosition(0,7):string = "Multiplica".
    
    /* Definindo formato numerico para coluna */
    Planilha:getColumns:getByIndex(1):setPropertyValue("NumberFormat",1).
    
    /* Ajuste automatico da largura das colunas */
    Planilha:getColumns:OptimalWidth = yes.
    
    /* Exemplo em outra linguagem - como fazer isso no 'CC'?
    args2(0).Name = "FilterName"
    args2(0).Value = "calc_pdf_Export"
    args2(1).Name = "SelectionOnly"
    args2(1).Value = true
    */
    
    /* Exemplo em outra linguagem - parte 2
    Documento:storeToURL("file:///C:/tmp/testdoc.pdf", args2).
    */
    
    Documento:storeToURL("file:///C:/tmp/testdoc.pdf", CC).
    
    /* Finaliza BrOffice */
    Documento:dispose().
    Desktop:terminate().
    
    release object Documento.
    release object Planilha.
    release object Desktop.
    release object BrOffice.
    
  2. Raviel

    Raviel Sem Pontuação

    Consegui fazer de uma forma diferente, fica a dica para quem vai querer fazer isso um dia, se é que um dia alguem vai querer fazer isso :?

    Juntei o COM object do libreoffice que me retorna a pasta de intalação e usei o command line do libreoffice que me permite converter um arquivo para pdf, segue um exemplo.

    Código:
    def var BrOffice as com-handle.
    def var ps As com-handle.
    def var s As char.
    
    create "com.sun.star.ServiceManager" BrOffice.
    
    ps = BrOffice:createInstance("com.sun.star.util.PathSubstitution").
    
    s = ps:getSubstituteVariableValue("$(prog)").
    
    MESSAGE s
    VIEW-AS ALERT-BOX INFO BUTTONS OK.
    Sobre o PathSubstitution: http://www.openoffice.org/api/docs/comm ... ution.html

    Comando: s(do exemplo acima) + "LibreOffice.exe --headless --convert-to PDF --outdir c:\temp\document.pdf c:\document.rtf".
    Guilhermef curtiu isso.

Compartilhe esta Página