- 14.4. Utilidadades
14.4.8. Gerar PDF do DANFE - 14.4.7. UpLoadNFe
« Anterior - 14.5. CriaProc
Próximo »
14.4.8. Gerar PDF do DANFE
Gerar PDF do DANFE
Assinatura:
int geraPdfDANFE(string XML, string origemDadosEmissor, string quadroRecibo, string quadroFatura, string quadroISSQN, string DPEC, string separadorItem, string gravaPDF, out string msgResultado)
Descrição:
Funcionalidade gerar o PDF de XML da NF-e.
Requisitos de uso:
- Componente Report.NET, a DLL Reports.dll deve existir na mesma pasta da DLL NFe_Util.dll;
- Adobe Acrobat Reader para fazer a visualização e impressão do PDF. A DLL Reports.NET pode ter problemas com versões mais recentes do Acrobat Reader, pois ela foi escrita para as versões 5/6 do Acrobat Reader.
Personalização possíveis
Quadro de Identificação do Emitente
- Informação do XML - configuração padrão, as informações de identificação do emitente são obtidas no XML da NF-e;
- Impresso personalizado - uso de impresso personalizado que contenha os dados do emissor, neste caso a DLL não imprime os dados do emitente;
- Logotipo do Emissor - uso de arquivo de logotipo da empresa. O logotipo deve ser uma imagem de 339 x 114 pixels com as informações do emitente da NF-e. A figura indicada irá ocupar todo o quadro de dados do emitente, assim o logotipo deve ter as informações cadastrais do emissor como no exemplo abaixo:

Quadro Recibo de Entrega - o quadro recibo de entrega pode ser posicionado no topo ou no rodapé do DANFE. O DANFE emitido com uso de Formulário de Segurança (FS/FS-DA) deve ter o recibo posicionado no topo;
- Omissão do Quadro FATURA / ISSQN - os quadros FATURA/ISSQN podem ser omitidos se não existirem informações para os quadros;
- Gravar PDF - possibilita a gravação do PDF do DANFE identificado com a chave de acesso da NF-e.
- Envio do PDF para a impressora novo - nova funcionalidade, permite o envio do PDF para impressora padrão, informar o literal [IMPRIMIR=n], a DLL irá enviar o PDF para impressora padrão. O n pode variar de 1 a 5.
- Impressão dos dados da FATURA - impressão dos dados da FATURA (número, valor original, valor do desconto e valor líquido) no quadro de informações adicionais;
- Omissão da Coluna Desconto - omissão da coluna desconto no corpo do DANFE;
- Mensagem de rodapé - impressão de mensagem de interesse do desenvolvedor no rodapé da primeira folha do DANFE;
- Mensagem no corpo do DANFE - impressão de mensagem em destaque no corpo do DANFE;
- Pasta de gravação do PDF - possibilidade de indicar a pasta de gravação do PDF;
- Impressão das observações do fisco - possibilidade de imprimir as observações do fisco no quadro de informações complementares Informar [OBSFISCO];
- Impressão das observações do contribuinte - possibilidade de imprimir as observações do contribuinte no quadro de informações complementares. Informar [OBSCONTRIBUINTE];
- Impressão de quadro de produtos completo - possibilidade de imprimir o quadro de produtos completo até o quador de Informações Complementares, mesmo que não existam itens de produto. Informar [QUADROPRODUTO];
- caractere ponto-e-vírgula como quebra de linha - o caractere ponto-e-vírgula informado em observações adcionais do fisco e do contribuite indica quebra de linha do texto.
Limitação de uso:
- a versão atual ainda não oferece suporte para impressão do DANFE em formato paisagem.
Parâmetros:
| nome | tipo | fluxo | descrição |
|---|---|---|---|
| XML | string | entrada | informar uma string com o XML da NF-e ou procNFe que deseja gerar o PDF. Os arquivos que não tiver sido emitido para ambiente de produção (tpAmb = 1) e não tiver a autorização de uso quando exigido (tpEmis=1 ou 3) ou não tiver os dados do DPEC (tpEmis=5) terão a expressão SEM VALOR FISCAL no DANFE gerado. |
| origemDadosEmissor | string | entrada | informar a forma de identificação do emitente, possibilidades: sem conteúdo - se o parâmetro for informado com vazio, os dados de identificação do emissor serão obtidos do XML da NF-e; nome de arquivo - se informado com um nome de arquivo, a imagem do arquivo informado irá ocupar o quadro de identificação do emitente. A imagem deve ser um arquivo jpg de 339 x 114 pixels que deverá ter os dados cadastrais do emitente da NF-e, pois a imagem irá ocupar todo o quadro do emissor. impresso personalizado - se informado o literal [SEM DADOS EMITENTE], nenhum dado será impresso no quadro de identificação do emitente. |
| quadroRecibo | string | entrada | informar S ou I para indicar a posição onde será gerado o quadro do Recibo de Entrega: posição [S]uperior ou posição [I]nferior |
| quadroFatura | string | entrada | informar S ou N para indicar a impressão do quadro Fatura/Duplicatas, se existir informação o quadro Fatura/Duplicatas será impresso independente do valor informado. |
| quadroISSQN | string | entrada | informar S ou N para indicar a impressão do quadro ISSQN, se existir informação de ISSQN o quadro ISSQN será impresso independente do valor informado. |
| DPEC | string | entrada | informar o número e a data e hora de registro do DPEC quando a NF-e tiver sido emitido em contingência DPEC |
| separadorItem | string | entrada | informar L ou T ou B ou Z para indicar a forma de separação dos itens de detalhes nos casos em que a linha de detalhe ocupar mais de uma linha, significado das valores: [L]inha, [T]racejado, espaço em [B]ranco, e [Z]ebrado. Para força a geração do separador, basta informar o literal em minúsculo: [l]inha, [t]racejado, espaço em [b]ranco, e [z]ebrado |
| gravaPDF | string | entrada | Gerar arquivo PDF - informar o nome do arquivo PDF que será gravado, se o conteúdo for omitido, a PDF será gerado para visualização. A visualização do PDF só é possível se existir o Acrobat Reader instalado no equipamento. Este parâmetro permite a seguintes personalizações: [IMPRIMIR=n], a DLL irá enviar o PDF para impressora padrão. O n pode variar de 1 a 5; [NFeId.PDF] -> grava arquivo com nome = chave de acesso da NF-e; [SEM COLUNA DESCONTO] -> não gera a coluna de desconto; [RODAPE=texto do rodape] -> imprime o "texto do rodape" informado no RODAPE; [PASTA=nomePasta] -> indica a pasta de gravação do PDF; [VISUALIZAR] -> indica visualização da PDF; [ARQUIVO=nomeArquivo] -> grava o PDF com o nome indicado; [COM FATURA] -> indica que os dados da fatura devem ser impressos em informações adicionais; [MENSAGEM=texto da mensagem] -> imprime o "texto da mensagem" informado no corpo do DANFE; [SEM DADOS EMITENTE] -> não imprime os dados do emitente para atender quem tem impresso personalizado; [SEM QUADRO EMITENTE] -> não imprime os dados do emitente e nem o quadro do emitente para atender quem tem impresso personalizado; |
| msgResultado | string | saída | retorna a literal do resultado da chamada do WS. |
Exemplos de parâmetros gravaPDF"
gravaPDF = "nomeArquivo.pdf"
Efeito - gera um PDF com nomeArquivo.pdf
gravaPDF = "[RODAPE=Powered by NFe_Util.dll - FlexDocs Documentos Eletronicos - (C) 2011 - Todos os direitos reservados.][VISUALIZAR][IMPRIMIR=1][ARQUIVO=TESTE.PDF][PASTA=C:\]";
Efeito - gera um PDF TESTE.PDF na pasta c:\ que tem a mensagem "Powered by NFe_Util.dll - FlexDocs Documentos Eletronicos - (C) 2011 - Todos os direitos reservados." no rodapé, além de imprimir uma via na impressora padrão e oferecer a visualização do DANFE.
gravaPDF = "[ARQUIVO=" + nomeArquivo + "][PASTA" + pasta + "][IMPRIMIR=" + copias + "]"
Efeito - gera um arquivo com o nome contido em nomeArquivo na pasta informada em pasta e imprime a quatidade cópias informada em copias
Retorno:
O resultado da chamada é um valor inteiro com um dos seguintes códigos:
| código | Mensagem | origem | regra |
|---|---|---|---|
| 7900 | PDF da DANFE da NF-e: [chave da NF-e] foi gerado com sucesso | DLL | - |
| 7901 | PDF da DANFE da NF-e: [chave da NF-e] foi gravado com nome [valor informado] com sucesso | DLL | - |
| 7911 | PDF do DANFE da NF-e : [chave da NF-e] foi enviado para impressora com sucesso" | DLL | - |
| 7902 | Erro: Indicador de Imprimir Quadro de Recibo informado [valor informado] inválido, divergente de: [S]uperior ou [I]nferior | DLL | - |
| 7903 | Erro: Indicador de Imprimir Quadro de Fatura informado [valor informado inválido, divergente de: [S]im ou [N]ão | DLL | - |
| 7904 | Erro: Indicador de Imprimir Quadro de ISSQN informado [valor informado] inválido, divergente de: [S]im ou [N]ão | DLL | - |
| 7905 | Erro: Tipo Separador informado [valor informado] inválido, divergente de: [T]racejado, [L]inha, [B]ranco ou [Z]ebrado" | DLL | - |
| 7906 | Erro: Falha na gravação do PDF [nome arquivo], motivo da falha: [Mensagem de Erro] | DLL | - |
| 7907 | Erro: Falha na leitura do XML da NF-e:[Mensagem de Erro] | DLL | - |
| 7908 | Erro: Situação imprevista Erro do Windows:[{Mensagem de Erro] | DLL | - |
| 7909 | Erro: Falha no processo de tratamento do XML, examine a mensagem de erro do Windows: [Mensagem de Erro] | DLL | - |
| 7910 | Erro: Falha na leitura do arquivo de logo:[Mensagem de Erro] | DLL | - |
| 7912 | Erro: Falha no processo de impressão do PDF, examine a mensagem de erro do Windows: [Mensagem de Erro] | DLL | - |
Histórico de atualização:
- 2011-09-08 - 2Gv0.8- Versão preliminar.
- 2011-09-18 - 2Gv0.8a
- 2011-10-15 - 2Gv0.8b - opção de impressão do PDF
- 2011-11-03 - 2Gv0.8d - novas parâmetros de geração do DANFE
Exemplos:
Visual Basic
' ' declaração das variáveis que serão utilizadas na passagem de parâmetros da DLL ' Dim XML As String ' informar o XML da NF-e da versão 2.00 Dim OrigDadosEmissor As String ' origem dos dados do emissor Dim quadroRecibo As String ' posicão de impressão do quadroRecibo [S]uperior [I]nferior Dim quadroFatura As String ' indicador de impressão do quadro de Fatura/Duplicata Dim quadroISSQN As String ' indicador de impressão do quadro ISSQN Dim DPEC As String ' data e número do registro do DPEC Dim separadorItem As String ' indicador do separador de item que será utilizado quando o item ocupar mais de ' uma linha: [L]inha, [T]racejado, espaço em [B]ranco, e [Z]ebrado. Dim gravaPDF As String ' serve para indicar o nome do arquivo que será gravado, se o conteúdo for omitido ' o PDF será visualizado na tela; ' informe [NFeId.PDF] para gravar um arquivo com a chave da NF-e; ' Se informado o literal [IMPRIMIR=n], a DLL irá enviar o PDF para impressora padrão, ' o n pode varia de 1 a 5. Dim cResultado As Long ' código deretorno da chamada da DLL Dim msgResultado As String ' literal com resultado da chamada da DLL ' ' ' Importante: todas as variáveis utilizadas como parâmetro da DLL devem ser inicializadas ' ' Dim nomeArquivo As String ' nome do arquivo que será assinado ' nomeArquivo = "exemplo.xml" ' ' Carrega o conteúdo do nome do arquivo em XMLString ' Open nomeArquivo For Input As #1 XML = Input$(LOF(1), #1) Close #1 ' OrigDadosEmissor = "" ' origem dos dados do emissor no XML, possibilidades: ' sem conteúdo -> os dados do emissor serão obtidos do XML; ' nome arquivo -> a imagem informada irá ocupar todo o quadro dados do emitente; ' literal [SEM DADOS EMITENTE] -> nenhum dado será impresso no quado dados do emitente; quadroRecibo = "S" ' quadro do recibo no topo quadroFatura = "S" ' imprimir o quadro de Fatura/Duplicatas quadroISSQN = "S" ' imprimir o quadro de ISSQN DPEC = "" ' informar quando a NF-e tiver sido emitido em contingência DPEC separadorItem = "T" ' traço para separar o item quando o item ocupar mais de uma linha gravaPDF = "" ' informar o nome do arquivo do PDF. ' Se informado o literal [NFeId.PDF] a DLL irá gravar o PDF identificado com o chave de acesso da NF-e. ' A omissão do nome gera uma visualização em tela. '----------------------------------------------------- 'NOVO***NOVO***NOVO***NOVO ' Parâmetro gravaPDF, valores válidos: ' nomeArquivo -> grava PDF com nomeArquivo se existir apenas o nomeArquivo no parâmetro; ' [NFeId.PDF] -> grava arquivo com nome = chave de acesso da NF-e; ' [SEM COLUNA DESCONTO] -> não gera a coluna de desconto; ' [RODAPE=texto do rodape] -> imprime o "texto do rodape" informado no RODAPE; ' [PASTA=] -> indica a pasta de gravação do PDF; ' [VISUALIZAR] -> indica visualização da PDF; ' [ARQUIVO=nomeArquivo] -> grava o PDF com o nome indicado; ' [COM FATURA] -> indica que os dados da fatura devem ser impressos em informações adicionais; ' [MENSAGEM=texto da mensagem] -> imprime o "texto da mensagem" informado no corpo do DANFE; ' cResultado = 0 msgResultado = "" ' ' instancia a DLL - late binding ' Dim objNFeUtil As Object ' Set objNFeUtil = CreateObject("NFe_Util_2G.util") ' ' chama DLL ' cResultado = objNFeUtil.geraPdfDANFE(XML, OrigDadosEmissor, quadroRecibo, quadroFatura, quadroISSQN, DPEC, separadorItem, gravaPDF, msgResultado) ' ' tratar retorno ' If resultado < 7902 Then ' sucesso, conversão OK MsgBox msgResultado, vbInformation, "Informação" Else ' MsgBox "Processo de geração do PDF falhou..." & vbCrLf & msgResultado, vbExclamation, "Atenção" End If ' ' liberar DLL ' Set objNFeUtil = Nothing
- 14.4.8. Gerar PDF do DANFE
14.4. Utilidadades - « Anterior
14.4.7. UpLoadNFe - Próximo »
14.5. CriaProc