Progress x OpenOffice

Discussão em 'Progress 4GL' iniciado por naluf, Agosto 11, 2009.

  1. naluf

    naluf Membro Participativo

    Necessito gerar uma etiqueta com dados do produto e código de barras no OpenOffice e imprimir, sem que usuário nem ao menos visualize o OpenOffice, ou seja: pego uma sequência de dados, insiro um a um no OF imprimo e fecho o programa. Montei o código, porém não achei qual a função que faz a impressão automática. Alguém pode me ajudar ?
    Código:
    DEFINE VARIABLE chOpenOffice    AS COM-HANDLE. 
    DEFINE VARIABLE chWorkBook      AS COM-HANDLE. 
    DEFINE VARIABLE chDesktop       AS COM-HANDLE. 
    DEFINE VARIABLE chPrint         AS COM-HANDLE. 
    DEFINE VARIABLE chPrintX        AS COM-HANDLE.
    DEFINE VARIABLE XPrintable      AS COM-HANDLE    NO-UNDO. 
    
    DEFINE VARIABLE chWorkSheet1    AS COM-HANDLE. /*planilha1*/
    DEFINE VARIABLE chWorkSheet2    AS COM-HANDLE. /*planilha2*/
    DEFINE VARIABLE chCell          AS COM-HANDLE. 
    DEFINE VARIABLE cc              AS raw. 
    DEFINE VARIABLE dd              AS RAW. 
    
    DEFINE VARIABLE c-arquivo       AS CHAR. 
    DEFINE VARIABLE lProperties     AS COM-HANDLE. 
    
    
    CREATE "com.sun.star.ServiceManager" chOpenOffice.
    chDesktop = chOpenOffice:createInstance("com.sun.star.frame.Desktop"). 
    chWorkBook= chDesktop:loadComponentFromURL("file:///x:/custom/Modelos/Embalagem.ots","_blank",0,cc).
    
    CREATE "com.sun.star.ServiceManager" XPrintable.
    chPrintX = XPrintable:createInstance("com.sun.star.beans.XPrintable").
    
    /*Grava a planilha em uma arquivo temporário*/
    c-arquivo = "file:///c:/temp/Embalagem.ods".
    chWorkbook:storeAsUrl(c-arquivo ,dd ).
    
    chWorkSheet1= chWorkbook:Sheets:getByIndex(0). /*planilha 1*/
    chWorkSheet2= chWorkbook:Sheets:getByIndex(1). /*planilha 2*/
    
    chWorkSheet2:GetCellByPosition(0, 0):STRING = "Congelador Vertical Pop 410l - OP.: 999.999".
    chWorkSheet2:GetCellByPosition(0, 1):STRING = "GPTU-37".
    chWorkSheet2:GetCellByPosition(0, 2):STRING = string("2009.009999").
    chWorkSheet2:GetCellByPosition(0, 3):STRING = string("*12345678910*").
    chWorkSheet2:GetCellByPosition(0, 4):STRING = string("*12345678910*").
    chWorkSheet2:GetCellByPosition(0, 5):STRING = "Exemplo de observação 1".
    chWorkSheet2:GetCellByPosition(0, 6):STRING = "Exemplo de observação 2".
    chWorkSheet2:GetCellByPosition(0, 7):STRING = "Exemplo de observação 3".
    
    /*chWorkbook:storeAsUrl(c-arquivo ,dd ). /*Mostra a planilha criada*/*/
    /*chWorkbook:print(c-arquivo ,dd ). */
    
    chWorkBook:SetPropertyValue("Print", SESSION:PRINTER-NAME). 
    chWorkBook:SetPropertyValue("CopyCount", 2). /*Número de cópias*/
    /*chWorkBook:SetPropertyValue("Collate",FALSE). */
    chWorkBook:SetPropertyValue("Wait", TRUE). /*Caso der erro na impressão retorna*/
    
    
    /*Finaliza o Oppen Office*/
    /*
    chWorkbook:dispose(). 
    chDesktop:TERMINATE().
      */
    
    RELEASE OBJECT chOpenOffice.
    RELEASE OBJECT chWorkbook.
    RELEASE OBJECT chDesktop.
    RELEASE OBJECT chWorksheet1.
    RELEASE OBJECT chWorksheet2.
    
  2. naluf

    naluf Membro Participativo

    Depois de várias pesquisas e testes segue abaixo o código com impressão; caso alguém necessite.

Compartilhe esta Página