Impressao direto para impressora
Pessoal estou om uma duvida de como imprimir direto para a impressora, vi diversas functions etc.. mas ainda nao to conseguindo adaptar para o que eu quero.. acontece o seguinte...
Preciso fazer um programa para imprimir valores em folha de cheque que vem em formularios continuos, entao vai ter la
_____________________________________________________________
3.567,97
TRES MIL E QUINHENTOS E SESSENTA E SETE REAIS E NOVENTA E SETE
CENTAVOS
JOAO DA SILVA
SAO PAULO, 20 DE DEZEMBRO DE 2004
_____________________________________________________________
So que tem um problema caso o extenso do valor for maior que uma linha tem que ter uma divisao do extenso para a segunda linha e tbm essa medida tem que ser exata, e pelos testes que fiz nao adianta so pular uma linha, as vezes tem que pular uma linha e um pouquinho para chegar na medida da linha de baixo. Se alguem tiver alguma function que de para ajustar a impressao com detalhes em medidas me avise !!! Acho que enviando direto para a impressora fica mais facil que fazer por componente visual tipo report builder etc...
Peterks
Preciso fazer um programa para imprimir valores em folha de cheque que vem em formularios continuos, entao vai ter la
_____________________________________________________________
3.567,97
TRES MIL E QUINHENTOS E SESSENTA E SETE REAIS E NOVENTA E SETE
CENTAVOS
JOAO DA SILVA
SAO PAULO, 20 DE DEZEMBRO DE 2004
_____________________________________________________________
So que tem um problema caso o extenso do valor for maior que uma linha tem que ter uma divisao do extenso para a segunda linha e tbm essa medida tem que ser exata, e pelos testes que fiz nao adianta so pular uma linha, as vezes tem que pular uma linha e um pouquinho para chegar na medida da linha de baixo. Se alguem tiver alguma function que de para ajustar a impressao com detalhes em medidas me avise !!! Acho que enviando direto para a impressora fica mais facil que fazer por componente visual tipo report builder etc...
Peterks
Peterks
Curtidas 0
Respostas
Dopi
20/12/2004
Se vc está usando impressão direta verifique o espaçamento Vertical...
geralmente cheques usam espaçamento de 1/8 ou 7/72 e nao 1/6 que é o padrão das Impressoras
Pode ser que ajude...
O componente ACBrCHQ do projeto ACBr (Free e Multiplataforma) pode imprimir cheques nas Impressoras Chronos, Shalter, Bematech, e também em matriciais comuns...
O arquivo ACBrCHQImpressoraComum.pas faz todo o trabalho de impressão de Cheques em Impressoras matriciais, pode servir de subsidio para a sua rotina...
geralmente cheques usam espaçamento de 1/8 ou 7/72 e nao 1/6 que é o padrão das Impressoras
Pode ser que ajude...
O componente ACBrCHQ do projeto ACBr (Free e Multiplataforma) pode imprimir cheques nas Impressoras Chronos, Shalter, Bematech, e também em matriciais comuns...
O arquivo ACBrCHQImpressoraComum.pas faz todo o trabalho de impressão de Cheques em Impressoras matriciais, pode servir de subsidio para a sua rotina...
GOSTEI 0
Peterks
20/12/2004
Saberia me informar aonde posso achar essa unit? se tiver e puder me passar agradeceria..
Email astalavista13@bol.com.br
Obrigado pela dica.. !!!
Email astalavista13@bol.com.br
Obrigado pela dica.. !!!
GOSTEI 0
Vinicius2k
20/12/2004
Colega,
Se vc já pesquisou, já deve ter visto, mas se não, dê uma olhada no VDOPrint em http://devres.freeprohost.com
Ele não é específico para trabalhar com cheques como os do colega Dopi, mas é capaz de fazer a interface da sua aplicação diretamente com impressoras, matriciais ou InkJet / Laser.
Dentre as opções de espaçamento existe 1/8 que pode solucionar seu problema de salto.
No fórum do site existe uma modificação feita por um dos usuários adicionando a opção de espaçamento de 7/72. Esta opção não está implementada no componente por não ser aceito em todos os modelos de impressoras.
Se o pacote como um todo não lhe servir, como ele também é Open Source, vc pode analisar o código e aproveitar o que lhe interessar...
É apenas uma opção a mais, apesar de achar provável que os componentes do colega Dopi sejam mais apropriados para seu caso...
T+
Se vc já pesquisou, já deve ter visto, mas se não, dê uma olhada no VDOPrint em http://devres.freeprohost.com
Ele não é específico para trabalhar com cheques como os do colega Dopi, mas é capaz de fazer a interface da sua aplicação diretamente com impressoras, matriciais ou InkJet / Laser.
Dentre as opções de espaçamento existe 1/8 que pode solucionar seu problema de salto.
No fórum do site existe uma modificação feita por um dos usuários adicionando a opção de espaçamento de 7/72. Esta opção não está implementada no componente por não ser aceito em todos os modelos de impressoras.
Se o pacote como um todo não lhe servir, como ele também é Open Source, vc pode analisar o código e aproveitar o que lhe interessar...
É apenas uma opção a mais, apesar de achar provável que os componentes do colega Dopi sejam mais apropriados para seu caso...
T+
GOSTEI 0
Dopi
20/12/2004
Saberia me informar aonde posso achar essa unit? se tiver e puder me passar agradeceria..
Download em http://acbr.sourceforge.net
GOSTEI 0
Dopi
20/12/2004
Aproveitando a presença do Vinicius... ;-)
Vinicius, há alguma possibilidade do VDOPrint ser Multiplaforma e rodar tb no Kylix ? Vc usa alguma chamada direta a API do Windows ?
Vinicius, há alguma possibilidade do VDOPrint ser Multiplaforma e rodar tb no Kylix ? Vc usa alguma chamada direta a API do Windows ?
GOSTEI 0
Peterks
20/12/2004
Dopi entrei no site que me passou em downloads nao vi nada que possa a ser o componente que me passou.. e em componente nao ta funcionando o link sera que nao poderia me enviar no email que passei acima?
Obrigado mesmo.. Valeu
Obrigado mesmo.. Valeu
GOSTEI 0
Vinicius2k
20/12/2004
Olá Dopi !
Talvez seja possível, mas eu, realmente não saberia lhe responder... Eu não trabalho, e nunca trabalhei com CLX no Delphi e nem sequer vi a IDE do Kylix até hoje... Meus projetos são direcionados, exclusivamente, para a plataforma Windows por pressão de mercado, infelizmente.
Como desconheço o ambiente, eu até ´travei´ as procedures Register para só deixarem o pacote disponível em aplicações VCL.
Sim. Eu faço chamadas ´indiretas´ à API do Windows que não sei se estariam disponíveis no Kylx. Digo indiretas, pq uso a unit WinSpool como intermediária.
Eu tenho duas classes básicas no pacote :
A TVDOCaPrinter que utilizo para interface com impressoras Inkjet/Laser ou até mesmo matriciais, via driver do Windows. Nesta classe uso internamente o objeto TPrinter da unit Printers que creio poder ser facilmente substituível pela QPrinters (apenas creio, não tenho certeza pelos motivos que expliquei acima)
A TVDODmPrinter já uma implementação inteira e totalmente voltada para as matriciais. Nesta classe também utilizo a unit Printers, mas apenas para dar algumas funcionalidades a mais no componente, como, por exemplo, obter a lista de impressoras instaladas, etc. Eu poderia deixar de utilizar a unit Printers, mas achei desncessário reescrever as implementações que ela possui, como no exemplo de lista de impressoras, a função [i:954fca6088]EnumPrinters[/i:954fca6088] da API.
Mas é nesta classe, como um todo, que pode haver maior dificuldade... Nela trabalho diretamente com a API através das funções da unit WinSpool, não sei se esta unit teria correspondência para CLX. Os documentos são escritos diretamente diretamente na impressora, como faria um driver, e através do Spool, mas o documento é aberto em modo RAW, o que permite a velocidade e ao mesmo tempo a facilidade de liberar a aplicação rapidamente, além de poder ser utilizado com impressoras de rede, sem necessidade de mapear portas.
Faço uso das seguintes funções da API :
Faço uso também da definição de tipo [b:954fca6088]TDocInfo1[/b:954fca6088]
Será que é possível transformar o pacote em cross-plataform? Se vc puder, dê uma olhada no código fonte... Confesso que fiquei curioso agora..
T+
Talvez seja possível, mas eu, realmente não saberia lhe responder... Eu não trabalho, e nunca trabalhei com CLX no Delphi e nem sequer vi a IDE do Kylix até hoje... Meus projetos são direcionados, exclusivamente, para a plataforma Windows por pressão de mercado, infelizmente.
Como desconheço o ambiente, eu até ´travei´ as procedures Register para só deixarem o pacote disponível em aplicações VCL.
Sim. Eu faço chamadas ´indiretas´ à API do Windows que não sei se estariam disponíveis no Kylx. Digo indiretas, pq uso a unit WinSpool como intermediária.
Eu tenho duas classes básicas no pacote :
A TVDOCaPrinter que utilizo para interface com impressoras Inkjet/Laser ou até mesmo matriciais, via driver do Windows. Nesta classe uso internamente o objeto TPrinter da unit Printers que creio poder ser facilmente substituível pela QPrinters (apenas creio, não tenho certeza pelos motivos que expliquei acima)
A TVDODmPrinter já uma implementação inteira e totalmente voltada para as matriciais. Nesta classe também utilizo a unit Printers, mas apenas para dar algumas funcionalidades a mais no componente, como, por exemplo, obter a lista de impressoras instaladas, etc. Eu poderia deixar de utilizar a unit Printers, mas achei desncessário reescrever as implementações que ela possui, como no exemplo de lista de impressoras, a função [i:954fca6088]EnumPrinters[/i:954fca6088] da API.
Mas é nesta classe, como um todo, que pode haver maior dificuldade... Nela trabalho diretamente com a API através das funções da unit WinSpool, não sei se esta unit teria correspondência para CLX. Os documentos são escritos diretamente diretamente na impressora, como faria um driver, e através do Spool, mas o documento é aberto em modo RAW, o que permite a velocidade e ao mesmo tempo a facilidade de liberar a aplicação rapidamente, além de poder ser utilizado com impressoras de rede, sem necessidade de mapear portas.
Faço uso das seguintes funções da API :
function AbortPrinter; external winspl name ´AbortPrinter´; function ClosePrinter; external winspl name ´ClosePrinter´; function EndDocPrinter; external winspl name ´EndDocPrinter´; function EndPagePrinter; external winspl name ´EndPagePrinter´; function OpenPrinter; external winspl name ´OpenPrinterA´; function StartDocPrinter; external winspl name ´StartDocPrinterA´; function StartPagePrinter; external winspl name ´StartPagePrinter´; function WritePrinter; external winspl name ´WritePrinter´;
Faço uso também da definição de tipo [b:954fca6088]TDocInfo1[/b:954fca6088]
Será que é possível transformar o pacote em cross-plataform? Se vc puder, dê uma olhada no código fonte... Confesso que fiquei curioso agora..
T+
GOSTEI 0
Vinicius2k
20/12/2004
Dopi entrei no site que me passou em downloads nao vi nada que possa a ser o componente que me passou.. e em componente nao ta funcionando o link...
Colega,
O ACBr é um pacote inteiro para automação comercial... o que o Dopi quis dizer é o pacote tem um componente -- [b:3af6466e2d]ACBrCHQ[/b:3af6466e2d] -- que pode solucionar seu problema, mas que se não solucionar, dentro do pacote existe uma unit que pode lhe embasar para a criação da sua rotina de impressão de cheques -- [b:3af6466e2d]ACBrCHQImpressoraComum.pas[/b:3af6466e2d] --.
Vc deve baixar o pacote, instalar, verificar se o ACBrCHQ lhe atende. Se não atenter, vc deve estudar a unit indicada para implementar sua própria rotina. :wink:
T+
GOSTEI 0
Dopi
20/12/2004
Dopi entrei no site que me passou em downloads nao vi nada que possa a ser o componente que me passou..
Ola Peterks,
esse link vai leva-lo direto para a pagina de Download do arquivo ACBr Ver 0.07a.
http://prdownloads.sourceforge.net/acbr/ACBr-0.07a.ZIP?download
Como o Vinicius disse, o ACBr é um conjunto de componentes voltados para facilitar a interação com diversos equipamentos de automação comercial, conforme consta na Pagina principal do projeto...
Se vc quiser ver o componente ACBrCHQ ´trabalhando´ sem a necessidade de instala-lo, rode o executável CHQTeste.exe que consta no ZIP DemosWin32_0.07a.zip que vem dentro do pacote do ACBr...
GOSTEI 0
Dopi
20/12/2004
Será que é possível transformar o pacote em cross-plataform? Se vc puder, dê uma olhada no código fonte... Confesso que fiquei curioso agora..
T+
Ola Vinicius...
Muito obrigado pelas informaçoes detalhadas...
No ACBr tive a necessidade de implementar uma mini classe para acesso direto a Impressoras matriciais Seriais / Paralelas (TACBrDevice)... Mas fiz algo muito simples apenas para suprir as necessidades dos componentes ACBrCHQ e ACBrECF, que emulam em impressoras matriciais convencionais, o funcionamento do Hardware em correspondente...
Acho que um componentes completo para Impressão direta é importante para qq programador de Automaçao Comercial, seja para emissão de NF ou outros formulários continuos... Mas como a Multiplataforma é um dos principais objetivos do projeto, eu precisava que ele fosse compativel com a CLX.
Vou estudar os componentes VDOPrint e verificar a possibilidade de porta-lo pra CLX... Muito obrigado pela ajuda...
GOSTEI 0
Vinicius2k
20/12/2004
Vou estudar os componentes VDOPrint e verificar a possibilidade de porta-lo pra CLX... Muito obrigado pela ajuda...
Blz !
Qualquer dúvida, estou à disposição por e-mail ou no fórum do meu site. :wink:
Sucesso !
T+
GOSTEI 0