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!
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.
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.