Dúvida Acbrnfedanfcefortes - Tamanho Da Página - NFC-e - Nota Fiscal do Consumidor Eletrônica - Projeto ACBr
By RicardoVoigt,
Este tópico foi criado há 1890 dias atrás.
me surgiu uma dúvida com relação à impressão da NFC-e com o componente ACBRNFeDANFCeFortes...
Estou verificando a possibilidade de implantar meu sistema (juntamente com o ACBrNFeMonitor) em um cliente, e ele já tem outro sistema que imprime a NFC-e usando uma impressora laser, com papel A4 cortado ao meio, ou seja 105 mm de largura e 297 mm de altura. Por incrível que pareça, funciona...
Gostaria de saber se existe essa possibilidade? Definir o tamanho do papel (não achei essas propriedades) no componente, a fim de tentar encaixar a impressão com mais perfeição ao papel, pois fiz alguns testes e o ACBrNFeMonitor imprimiu o QRCode na página 2, sendo que ainda tinha espaço na página 1...
não se quiser terá que personalizar o componente para ti!
implementei aqui para mim a propeidade PapelAltura no TACBrNFeDANFCeFortes.
property PapelAltura: Integer read FPapelAltura write FPapelAltura default 0;
Mais tarde vou enviar ao cliente um "bacalhau" para aprovação da impressão.
Como eu tinha o mesmo XML que testamos outro dia, testei e acho que vai dar certo.
Outro ponto no que mexi unit ACBrDANFCeFortesFr, foi na procedure rlVendaBeforePrint,
onde calcula o tamanho da página em pixels e depois converte para milimetros:
if (ACBrNFeDANFCeFortes.PapelAltura > 0) then
rlVenda.PageSetup.PaperHeight := ACBrNFeDANFCeFortes.PapelAltura;
// Calculando o tamanho da Página em Pixels //
TotalPaginaPixel := ...
Espero que esta ideia seja aprovada como uma contribuição para o projeto ACBr,
qualquer outra ideia ou sugestão será bem vinda...
como foi o teste em seu cliente?
poderia anexar um pdf do que foi gerado?
assim poderemos ver se pode aplicar isso ao svn
infelizmente não tenho muito acesso ao cliente,
como é um estabelecimento no interior da minha cidade,
eu acabei deixando ele me dar retorno para testar a impressão, e ainda não me ligou...
Nesse outro tópico abaixo, tinha outro usuário que estava com problema na impressão da NFCe Fortes em A4,
e eu postei uma resposta citando esta ideia de configurar a altura da página, e um anexo
que é justamente o "bacalhau" compilado que eu gerei para testar com o meu cliente...
Estou finalizando a implementação da NFCe, e quanto a impressão em A4 estava saindo cortada nas margens.
Seguindo a solicitação do Ricardo complementei e adicionei aos fontes do danfe em fortes as definições de margens, comprimento e largura da página.
Ajustei também a palavra "Ãrea" no relatório.
Vejam se convém adicionar aos fontes.
voltei ao fórum aqui para comentar...
botei em produção a impressão da danfe da NFC-e,
usando o ACBrNFeMonitor com a minha alteração no componente ACBRNFeDANFCeFortes,
para definir a altura do papel, conforme descrevi na abertura do tópico...
Inclusive eu adicionei estas propriedades "Margens ajustáveis" e "altura da página"
aqui pra configurar no ACBrNFeMonitor (abas DANFe e NFC-e)
Eu vi que teve outro colega do fórum também andou implementando
a mesma propriedade, mas não achei mais onde eu li isso...
Pensando em evitar futuros transtornos, eu gostaria de saber
se essa propriedade será disponibilizada no componente?
Olá Clerison, Não possuo mais estes fontes, pois foi antes de atualizar para o trunk2. Por enquanto tenho dois clientes imprimindo em impressoras térmicas Epson e um em A4 e está normal. O que está acontecendo que não consegue imprimir?
wilson_jr, a única forma que consegui imprimir foi alterando diretamente o dfm onde do danfe do fortes. Tive que setar o papel para A4. Sem isso sempre dava problema de "ilegal media size" na impressora.
Sobre o Trunk2, está estável para NFC-e? Seria uma boa idéia migrar?
Clerison, Bom dia!
Aqui está normal, estou utilizando o Trunk2 sem problemas.
Só lembrando que ao migrar, haverá necessidade de alterações em seu código, pois algumas funções e propriedades sofreram alterações.
Estou necessitando realizar essa alteração. Meu problema não é exatamente esse. Pra mim, o comprimento do doc fica fixado (temporariamente) na impressora em 29,7cm logo após a impressão da NFCe. O problema é que o arquivo seguinte acaba pegando tal formatação, e então não imprime por completo (apenas 29,7cm). Se eu realizo a impressão desse mesmo documento em outro ponto do sistema, e não em conjunto com a impressão da acbr, a impressão sai normal. Portanto, já descartamos qualquer configuração de formulario de impressão, drivers, etc, e sabemos que o problema está ali, na impressão da nfce.
Porém, gostaria de implementar tudo isso através de um helper, visto que tal propriedade não está acessível a nível do componente. Assim, não necessitamos alterar o código a cada atualização da acbr. A menos que tenha sido realizada alguma modificação.
Alguém saberia como posso implementar desse modo? Ou alguma outra alternativa para não realizar alterações no fonte da ACBr?
9 horas atrás, felipetomm disse:
Pra mim, o comprimento do doc fica fixado (temporariamente) na impressora em 29,7cm logo após a impressão da NFCe. O problema é que o arquivo seguinte acaba pegando tal formatação, e então não imprime por completo (apenas 29,7cm). Se eu realizo a impressão desse mesmo documento em outro ponto do sistema, e não em conjunto com a impressão da acbr, a impressão sai normal. Portanto, já descartamos qualquer configuração de formulario de impressão, drivers, etc, e sabemos que o problema está ali, na impressão da nfce.
Corrigindo. O problema não era temporariamente, e sim, se extendia até o encerramento da aplicação.
Para tal, descobrimos que a informação temporária é resolvida somente após executar a chamada da seguinte linha:
Printer.Create;
Como o procedimento que executamos utiliza do objeto Printer, o mesmo acabava pegando o tamanho fixado após a impressão do cupom.
Com a linha acima, o objeto é recriado com as definições padrões das impressoras do sistema.
Acreditamos ainda não ser a melhor prática, mas foi a única que atendeu ao problema, sem a necessidade de realizar alterações no fonte.
Sugere alguma correção no componente? se sim anexe o código e detalhe.
Bom dia Juliomar.
Alterei e fiz testes aqui. Apenas adicionei a uses "Printers" e a linha "Printer.Create;", conforme segue abaixo:
procedure TNotasFiscais.Imprimir;
VerificarDANFE;
TACBrNFe(FACBrNFe).DANFE.ImprimirDANFE(nil);
Não tenho muito conhecimento com o componente. Acredito que tal ajuste tenha um lugar mais apropriado.
Esperamos que seja de ajuda.
Segue anexo o arquivo com a alteração.
Subi a mudança, caso tenha efeitos colaterais retornamos!
Reverti o commit...
Não é correto ACBrNFeNotasFiscais.pas depender de "Printers"...
e da maneira que está implementado, parece gerar "memory leak"
concordo Daniel depois que conversamos está certo o que me informou ! fiz os testes, obrigado por reverter os códigos
Juliomar e demais,
O problema parece ser o fato do Gerador de Relatórios estar memorizando o tamanho da página do último relatório emitido, correto ?
Qual o Gerador de Relatórios ? (Fortes ?)
Como posso reproduzir o problema ? ( de preferência usando os Demo do ACBr..)
Exato, como não uso a NFCe e impressão intercalada não tenho o problema!
Se alguém passar um passo a passo, de como reproduzir o problema, usando o Demo (ou pelo menos um Trecho de código)... Eu posso investigar o problema...
Boa tarde Daniel, Juliomar. Desculpem a demora em responder. Estava realizando mais alguns testes.
18 horas atrás, Daniel Simoes disse:
Concordo.. Acredito que o ideal mesmo, que foi nossa tentativa inicial, é verificar qual a chamada que deixa essa configuração para a aplicação.
Correto. Acreditamos que seja esse o problema.
Sim.. estamos utilizando o fortes.
Estamos utilizando o pacote SynopsePDF, do framework mORMot para gerar os documentos (carnê de parcelas) que são impressos após o cupom.
Estou preparando um material para você poder realizar os testes no seu ambiente. Assim que estiver pronto, envio aqui em anexo.