Selecionar Impressora Progress X OpenOffice

Discussão em 'Progress 4GL' iniciado por fgrutz, Abril 1, 2012.

  1. fgrutz

    fgrutz Sem Pontuação

    Boa Noite,

    Estou tentando imprimir um documento no OpenOffice (importando um Layout), porém ele esta utilizando sempre a impressora salva no documento..
    Alguém sabe como alterar a impressora do documento? estou utilizando o codigo abaixo que achei na Internet, porém não estou obtendo sucesso.
    (ja alterei a Impressora da Sessão, ate mesmo alterei na mão o nome da impressora dentro do codigo).

    Código:
    DEFINE VARIABLE chOpenOffice AS COM-HANDLE NO-UNDO.
    DEFINE VARIABLE chWorkBook AS COM-HANDLE NO-UNDO.
    DEFINE VARIABLE chDesktop AS COM-HANDLE NO-UNDO.
    DEFINE VARIABLE chWorkSheet AS COM-HANDLE NO-UNDO.
    DEFINE VARIABLE chCell AS COM-HANDLE NO-UNDO.
    DEFINE VARIABLE c-arquivo AS CHARACTER   NO-UNDO.
    DEFINE VARIABLE iRow AS INTEGER NO-UNDO.
    DEFINE VARIABLE iCol AS INTEGER NO-UNDO.
    DEFINE VARIABLE chrLabel AS CHARACTER NO-UNDO.
    DEFINE VARIABLE cc AS RAW NO-UNDO.
    
    CREATE "com.sun.star.ServiceManager" chOpenOffice.
    chDesktop = chOpenOffice:createInstance("com.sun.star.frame.Desktop").
    
    /* o Arquivo que esta sendo aberto pode ser qualquer modelo previamente salvo */
    chWorkBook  = chDesktop:loadComponentFromURL("file:///c:/temp/formulario.ods","_blank",0,cc).
    chWorkSheet = chWorkbook:Sheets:getByIndex(0). /*planilha 1*/
    
    chWorkSheet:GetCellByPosition(1, 9):STRING   = "Teste Impressora".
    chWorkSheet:GetCellByPosition(6, 9):STRING   = "123456".
    chWorkSheet:GetCellByPosition(9, 9):STRING   = SESSION:PRINTER-NAME.
    
    c-arquivo = "file:///c:/temp/Form-1.ods".
    chWorkbook:storeAsUrl(c-arquivo ,cc ).
                 
    chWorkBook:SetPropertyValue("print", SESSION:PRINTER-NAME).
    
    chWorkBook:PRINT(CC).
    
    IF chOpenOffice <> ? THEN
        RELEASE OBJECT chOpenOffice.
    IF chWorkbook   <> ? THEN
        RELEASE OBJECT chWorkbook.
    IF chDesktop    <> ? THEN
        RELEASE OBJECT chDesktop.
    IF chWorksheet  <> ? THEN
        RELEASE OBJECT chWorksheet.
    
    Obrigado!
  2. mcarril

    mcarril Membro Participativo

    Você verificou o propath e se não tem nenhum .r interferindo no processo ?
  3. LeandroSantos

    LeandroSantos Membro Participativo

    Tem algumas opções do OpenOffice que precisam ser alteradas na variavel "CC" do tipo raw, impressora, no. de copias, esconder OpenOffice, etc...

    Mas no progress não sei como tratar este tipo de varial, se voce procurar na net em outras linguagens VB, C# você vai encotrar exemplos, mas eu não concegui fazer em Progress, se você conceguir por favor poste a solução.
  4. fgrutz

    fgrutz Sem Pontuação

    Ja verifiquei e pior que não tem nada interferindo...

    Encontrei na Net varias "maneiras" de fazer isso porém em outras linguagens... também não consegui converter-las para o Progress..

    A solução que adotei, foi atraves do progress, alterar a impressora padrão do windows para a Impressora que o usuario selecionou e depois de imprimir, voltar esta ao que tava antes.

Compartilhe esta Página