Bom dia amigos, aqui na empresa meus aplicativos atualmente em VB6, utilizam dois tipos de impressão :
Laser/Jato (via crystal report) e Matricial(via LPT1)
Estou migrando para JAVA e gostaria de saber se algum de voces conhecem links,artigos,livros que tratam sobre este assunto pois utilizo muito isso aqui e não posso abrir mão desses dois tipos de impressão aqui.
Vc pode usar o JasperRepost… já para matricial, nunca precisei fazer e não sei se há suporte… bem, deve existir, em Java existe um monstrinho pra tudo!
V
vimieiro
Valeu Rodrigo vou pesquisar sobre JasperReport.
Mas aqui mandamos correspondência para Muita Gente e sempre estou imprimindo Etiquetas em impressora Matricial (algo em torno de 5.000 etiquetas/mês) e preciso muito de impressão direto na LPT1.
Vimieiro
diego2005
E pra modelar os relatórios você pode usar o iReport.
T+
ozielneto
Para impressôes bem acabadas, você deve usar o JasperReports,
até porque ele pode exportar os relatórios em PDF, EXCEL, RTF, etc…
Para a saída matricial, sugiro você gerar uma saída em arquivo ( no formato da impressora )
e enviar para o spooler de impressão.
Ou ainda numa solução desesperada, tentar comunicação via LPT usando alguma API nativa.
Bom trabalho.
V
vimieiro
"Para a saída matricial, sugiro você gerar uma saída em arquivo ( no formato da impressora )
e enviar para o spooler de impressão. "
Desculpe oziel mas sou iniciante e não entendi o que quis dizer.
Poderia ser mais claro ?
Um forte abraço
Vimieiro
A
andre2k2
vimieiro:
Bom dia amigos, aqui na empresa meus aplicativos atualmente em VB6, utilizam dois tipos de impressão :
Laser/Jato (via crystal report) e Matricial(via LPT1)
Estou migrando para JAVA e gostaria de saber se algum de voces conhecem links,artigos,livros que tratam sobre este assunto pois utilizo muito isso aqui e não posso abrir mão desses dois tipos de impressão aqui.
Um forte abraço
Vimieiro
Olha uma classezinha prontinha q manda direto pra impressora matricial…
Da uma estudada a adequa a suas necessidades!!
publicclassPrintComm{publicstaticvoidsendTextToPrinter(StringprinterName,StringjobName,StringaText,StringbeginCommand,StringendCommand)throwsPrintException,InterruptedException{//Attribute Set storagePrintRequestAttributeSetpras=newHashPrintRequestAttributeSet();//We're looking for Text-capable printersDocFlavorflavor=DocFlavor.INPUT_STREAM.AUTOSENSE;//Return list of printers capable of printing TextPrintServiceprintService[]=PrintServiceLookup.lookupPrintServices(flavor,pras);//Get the default printerPrintServicedefaultService=PrintServiceLookup.lookupDefaultPrintService();//Display the print dialog with default printer selectedpras.add(newJobName(jobName,null));pras.add(MediaTray.MAIN);PrintServiceservice=null;if(printerName!=null){// Seleciona o serviço cujo nome foi passado pelo parametro printerNamefor(inti=0;i<printService.length;i++){if(printService[i].getName().equalsIgnoreCase(printerName)){service=printService[i];break;}}}else{// Se o nome da impressora não foi passado então abre a janela para o usuario escolherservice=ServiceUI.printDialog(null,50,50,printService,defaultService,flavor,pras);}//If user selected "OK"...if(service!=null){//Create a print jobDocPrintJobjob=service.createPrintJob();Docdoc;//Create storage for attributesDocAttributeSetdas=newHashDocAttributeSet();//Create the print document from PDF file with default attributesdoc=newSimpleDoc(newByteArrayInputStream(beginCommand+aText+endCommand),flavor,das);//Try some times...booleanok=false;inttrials=0;while(!ok&&trials<10){//Print the jobtry{job.print(doc,pras);ok=true;}catch(PrintExceptionex){ex.printStackTrace();}//Wait a few seconds for job to spoolThread.sleep(2000);trials++;}}}privatestaticByteArrayInputStreamnewByteArrayInputStream(StringaText){ByteArrayInputStreamretorno=newByteArrayInputStream(aText.getBytes());returnretorno;}privatestaticInputStreamnewInputStream(StringaText){InputStreamretorno=newByteArrayInputStream(aText.getBytes());returnretorno;}}
Boa sorte!!
V
vimieiro
Valeu demais da conta andre2k2
V
vm1
andre2k2 muito boa esse exemplo. Salvaste meu dia…
F
felipe.lp27
Oi, estou com algumas duvidas em relaçao a esse codigo do andre2k2…
eu testei na minha HP DeskJet 695C e funciono mais ou menos, não pegou acentos, a impressora deu umas travadas e tive q clica no botao de puxa o papel pra ela começa imprimi… o motivo desses problemas é se o código serve apenas para impressora matricial?
gostaria de saber tambem a finalidade do campo jobName que não consegui entender… (sou novo em java)
Obrigado.
A
andre2k2
Felipe, o jobName é o nome que ira identificar a impressão… quando você abre aquela janelinha que tem a fila de impressao (No windows abre clicando no icone da impressora que aparece na tray). Um exemplo: quando você manda o Word imprimir ele cria um Job com o nome ‘Documento do Word’, isso identifica que aquela impressão na fila é do Word. É só mesmo para aparecer na janelinha bonitinho, bem formatado, se nao me engano voce pode até passar nulo pro parametro.
Quanto a seu problema com a impressora DeskJet não posso te ajudar muito. Quando estava desenvolvendo a impressão do sistema que utiliza essa classe q eu te enviei, precisei estudar alguns parametros que você passa junto da String que deseja imprimir. Por exemplo: se voce que imprimir na matricial “Olá Mundo!” para formatação passavasse alguns caracteres especiais com parametros por exemplo o tamanho da fonte… ficaria assim “F14Olá mundo!”. Como fiz a impressão apenas para matriciais Epson ficou muito facil, estudei a especificação da Epson e formatei perfeitamente. Sugiro a você procurar por essas especificações da HP, especificamente do modelo de impressora onde voce deseja usar o sistema.
Por outro lado, essa classe não é muito util para impressoras jato de tinta ou laser, pois suporte a esse tipo de impressora em java é riquíssimo. Se for usar apenas impressoras assim procure mais um pouco a respeito de impressão em java.
F
felipe.lp27
Obrigado andre… me ajudou bastate… =)
M
muktkd
String beginCommand, String endCommand … nao entedi o q devo passar nesses dois parametro.
Bom dia andre2k2,
Estou desenvolvendo uma forma de gerar etiquetas aqui na empresa porém será impresso em uma impressora matricial e estou com o problema citado nesse tópico, analisei a classe que vou postou, porém gostaria de saber como ela irá funcionar! Poderia me ajudar?
Clécio
lucasportela
Ele postou isso a 4 anos, acho meio difícil dele responder…
no entanto aqui tem um exemplo, não sei se irá lhe atender.