COM automation & JACOB

2 respostas
J

Boa noite a todos,
depois de muito pesquisar e queimar quase todos meus neurônios, decidi buscar ajuda pela falta de material disponível sobre esse assunto. Vou contar em detalhe meu problema para que se essa dúvida aparecer em alguma outra mente, esse problema seja mais facilmente resolvido...

Comprei uma impressora de etiquetas da Brother (modelo QL-550) para integrar com um sistema que desenvolvi em java para gerenciamento de estoque. Criei um relatório em Jasper para imprimir a etiqueta com os dados de um determinado produto cadastrado no bd, mas minha surpresa foi que a impressora não imprimi esse relatório porque diz que o papel configurado na impressora é contínuo, diferente da configuração do relatório - ou seja, a impressora só imprimi documentos produzidos pelo editor que vem com a impressora (o nome desse editor é P-Touch), o que me fez descartar o uso do Jasper. Pesquisei (e muito!) no site da Brother e descobri uma ferramenta (cujo nome é b-Pack) que integra qualquer linguagem que tenha suporte "COM automation" com essa impressora através de um arquivo template pré-definido pelo próprio editor que vem com a impressora. Foi aí que descobri o tal do JACOB para fazer essa integração com o Java. O diabo é que pouco material existe sobre o JACOB na net, a maioria fazendo referência a abrir documentos do WORD/EXCELL. Nenhum deles explicava para que serve cada comando (dispatch.put, dispatch.call, etc.) e aí eu me perdi no código. Não consegui descobrir o procedimento básico para chamar qualquer função desse b-Pack. Após pesquisa no manual desse programa, achei exemplos de como integrá-lo com o VBA, tais como o abaixo:

Public Sub DoPrint(strPath As String, strExport As String)

    Creates the b-PAC object
    Dim ObjDoc As BrssCom.Document
    Set ObjDoc = CreateObject("BrssCom.Document")
    
     Opens the template
    If (ObjDoc.Open(strPath) <> False) Then
    
         Searches for text from the field names, and replaces the text
        Dim nIndex As Integer
        nIndex = ObjDoc.GetTextIndex("Company")
        ObjDoc.SetText nIndex, edPosition.Text
        nIndex = ObjDoc.GetTextIndex("Name")
        ObjDoc.SetText nIndex, edName.Text
    
         Printing or exporting
        If (strExport = "") Then
            ObjDoc.DoPrint 0, "0"           ' Print
        Else
            ObjDoc.Export 2, strExport, 180 ' Export
        End If
    End If
    Set ObjDoc = Nothing
End Sub

A pergunta é: como reescrever o código acima em Java, usando o raio do JACOB ou qualquer outra ferramenta?

Agradeço desde já a ajuda.

2 Respostas

J

Bom, após mais um dia de estudos, consegui fazer o programa rodar sem que aparecesse nenhum erro, mas como ainda não imprime, acho que pouco progredi... Vejam a tradução para java que eu tentei fazer...

ActiveXComponent bPack = new ActiveXComponent("BrssCom.Document");

Dispatch oOBJ = bPack.getObject();

Dispatch.call(oOBJ, "Open", "EtiquetaGde.lbl");
Dispatch.call(oOBJ, "DoPrint", 0, "0");

O problema é que nada acontece. Eu presumi que o método Dispatch.call(Objeto, método, parametro1, parametro2, parametroN) chama determinado método do programa b-Pack informando seus parametros, mas como nada aconteceu estou postando novamente a dúvida...

Eu sei que nada pode ser construido sem esforço, mas essa tá dificil demais! Por favor, quem puder me dar alguma dica, por menor que ela seja, eu ficaria muito grato!

Abraços,

Bernardo.

Tche

Oi cara, estou com o mesmo problema e a dias tentando mas tá f@%*% essa…

você resolveu este problema de que forma?

uso uma Brother QL-570!!!

Abs

Criado 19 de junho de 2007
Ultima resposta 15 de ago. de 2014
Respostas 2
Participantes 2