- 5. Utilidades
5.7. Gerar PDF do DAMDFE [19-09-19] - 5.6. Elimina Identação XML
« Anterior
5.7. Gerar PDF do DAMDFE [19-09-19]
Gerar PDF do DAMDFE
Assinatura:
int geraPdfDAMDFE(string XML, string logo, string visualizar, string parametros, out string msgResultado)
Descrição:
Funcionalidade gerar o PDF de XML do DAMDF-e dos modais rodoviário e áereo.
Requisitos de uso:
- Componente Report.NET, a DLL Reports.dll deve existir na mesma pasta da DLL MDFe_Util.dll;
Aplicativo visualizador de PDF para fazer a visualização e impressão do PDF, opções:
- Adobe Acrobat Reader - 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.
- SumatraPDF - Este aplicativo nãor requer instalação no equipamento e tem a vantagem de ser compacto.
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 do MDF-e;
- 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 do MDF-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:
Obs.: quem desejar ter uma melhor resolução do logo, pode informar um logo com mais detalhes aumentando o tamanho da imagem, o aumento deve ser proporcional na altura e largura, ex.: dobrar a quantidade de pontos 339 x 114 -> 678 x 228.
Logotipo do Emissor Baixa Resolução - 339 x 114
Logotipo do Emissor Média Resolução - 678 x 228
Logotipo do Emissor Alta Resolução - 1356 x 456
personalização dos dados do emissor quando informar o arquivo de logo, exemplo:
Exemplo:
[DadosEmissor=<DadosEmissor><Item><cxMM>39</cxMM><cyMM>7</cyMM><fonteMM>2,7</fonteMM><texto>MRM KATO ASAKURA EPP</texto></Item><Item><cxMM>10</cxMM><cyMM>16</cyMM><fonteMM>2,5</fonteMM><texto>Av. Altino Arantes 131, 14º andar - sala 145</texto></Item><Item><cxMM>15</cxMM><cyMM>20</cyMM><fonteMM>2,2</fonteMM><texto>CEP: 19.900-030 - Centro - Ourinhos/SP</texto></Item><Item><cxMM>14</cxMM><cyMM>24</cyMM><fonteMM>2,2</fonteMM><texto>Tel: (14)-3302-1000 - fax: (14)-3302-2000</texto></Item><Item><cxMM>22</cxMM><cyMM>28</cyMM><fonteMM>2,2</fonteMM><texto>suporte@www.flexdocs.com.br</texto></Item></DadosEmissor>]
Para gerar o texto "MRM KATO ASAKURA EPP" será gerado com fonte 2,7 mm na coordenada 39mm , 7 mm do quadro dos dados do emitente, devemos informar:
<DadosEmissor> <Item> <cxMM>39</cxMM> <==== posição x em MM <cyMM>7</cyMM> <==== posição y em MM <fonteMM>2,7</fonteMM> <==== tamanho do fonte em MM <texto>MRM KATO ASAKURA EPP</texto> <==== texto a ser impresso </Item> </DadosEmissor>
Obs.: É possível mesclar estas informações com um logo, basta criar um logo sem informar os dados do emissor.
Logotipo do Emissor Baixa Resolução - 339 x 114
Logotipo do Emissor Média Resolução - 678 x 228
Logotipo do Emissor Alta Resolução - 1356 x 456
Possibilidade de uso de marca d´água [MarcaDagua=xml], permite acrescentar imagens no DAMDFE, informar um XML com pelo menos um item:
[MarcaDagua=<MarcaDagua><Item><cxMM>100</cxMM><cyMM>150</cyMM><imagem>c:\logo.jpg</imagem><largMM>100</largMM><altMM>100</altMM></Item></MarcaDagua>]
estrutura do XML identado para melhor visualização
<MarcaDagua> <Item> <cxMM>100</cxMM> // coordenada x (centro da imagem) <cyMM>150</cyMM> // coordenada y (superior) <imagem>c:\logo.jpg</imagem> <largMM>100</largMM> <altMM>100</altMM> </Item> </MarcaDagua>
Limitação de uso:
- O DAMDFE não permite a customização do leiaute.
Parâmetros:
nome | tipo | fluxo | descrição |
---|---|---|---|
XML | string | entrada | informar uma string com o XML do MDF-e ou procCTe 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 EPEC (tpEmis=5) terão a expressão SEM VALOR FISCAL no DAMDFE gerado. |
logo | 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 do MDF-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 do MDF-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. |
visualizar | string | entrada | informar S ou N para indicar a visualização do PDF. |
parametros | string | entrada | [ARQUIVO=nomeArquivo], a DLL irá gravar um PDF com no nome indicado na pasta da aplicação; [MDFeId.PDF] -> grava arquivo com nome = chave de acesso do MDF-e; [RODAPE=texto do rodape] -> imprime o "texto do rodape" informado no RODAPE; [PASTA=nomePasta] -> indica a pasta de gravação do PDF; [IMPRIMIR=n], a DLL irá enviar o PDF para impressora padrão. O n pode variar de 1 a 5; [MENSAGEM=texto da mensagem] -> imprime o "texto da mensagem" informado no corpo do DAMDFE; [SumatraPDF] -> indica o uso do SumatraPDF para visualização e impressão do PDF, necessário ter o SumatraPDF na pasta da aplicação. |
msgResultado | string | saída | retorna a literal do resultado da chamada do WS. |
Exemplos de parâmetros parametros"
parametros = "[RODAPE=Powered by MDFe_Util.dll - FlexDocs Documentos Eletronicos - (C) 2019 - 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 MDFe_Util.dll - FlexDocs Documentos Eletronicos - (C) 2019 - Todos os direitos reservados." no rodapé, além de imprimir uma via na impressora padrão e oferecer a visualização do PDF do DAMDFE.
parametros = "[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 DAMDFE do MDF-e: [chave do MDF-e] foi gerado com sucesso | DLL | - |
7901 | PDF da DAMDFE do MDF-e: [chave do MDF-e] foi gravado com nome [valor informado] 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 visualização informado [valor informado] inválido, divergente de: [S]imr ou [N]ão | DLL | - |
7904 | Erro: A DLL não oferece suporte para geração do modal: [valor informado] desejado | DLL | - |
7905 | Erro: A DLL não oferece suporte para geração do PDF para a versão do MDF-e: [versão do XML] | 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 do MDF-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 | - |
7911 | Erro: Falha no processo de visualização do PDF, examine a mensagem de erro do Windows: [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 | - |
7913 | Erro: Falha no processo de tratamento dos DadosEmissor=[conteúdo informado como DadosEmissor], examine a mensagem de erro do Windows: [Mensagem de Erro] | DLL | - |
7914 | Erro: SumatraPDF.exe inexiste na pasta da DLL: [pasta da DLL] | DLL | - |
7915 | Erro: Falha no processo de tratamento da MarcaDagua =[Mensagem de Erro], examine a mensagem de erro do Windows: [Mensagem de Erro] | DLL | - |
7916 | Erro: Arquivo de imagem:[nomeArquivoImagem] não localizado | DLL | - |
7917 | Erro: Falha na leitura do arquivo de imagem:[nomeArquivoImagem], examine a mensagem de erro do Windows: [Mensagem de Erro] | DLL | - |
Histórico de atualização:
- 2019-09-19 - v3.04c - Versão preliminar.
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 do MDF-e da versão 3.00a Dim logo As String ' nome arquivo do logotipo Dim visualizar As String ' data e número do registro do DPEC Dim parametros As String ' parametros da geracao do PDF Dim cResultado As Long ' código deretorno da chamada da DLL Dim msgResultado As String ' literal com resultado da chamada da DLL Dim nomeArquivoMDFe As String ' nome do arquivo procMDFe que será lido nomeArquivoMDFe = "c:\procMDFe.xml" On Error GoTo 0 ' Carrega o conteúdo do nome do arquivo em XMLString ' Open nomeArquivoMDFe For Input As #1 XML = Input$(LOF(1), #1) Close #1 ' visualizar = "S" ' visualizar PDF "S" ou "N" ' Parâmetro, valores válidos: ' [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; ' [MENSAGEM=texto da mensagem] -> imprime o "texto da mensagem" informado no corpo do DANFE; ' [IMPRIMIR=n] -> imprime n cópias do DAMDFE ' [SumatraPDF]** -> indica o uso do SumatraPDF para visualização e impressão do PDF, necessário ter o SumatraPDF.exe na pasta da aplicação ' parametros = "[RODAPE=Powered by MDFe_Util.dll - FlexDocs Documentos Eletronicos - (C) 2019 - Todos os direitos reservados.][ARQUIVO=TESTE.PDF][PASTA=C:\]" cResultado = 0 msgResultado = "" ' ' instancia a DLL - late binding ' Dim objMDFeUtil As Object ' Set objMDFeUtil = CreateObject("MDFe_Util.Util") ' ' chama DLL ' cResultado = objMDFeUtil.geraPdfDAMDFE(XML, logo, visualizar, parametros, msgResultado) ' ' tratar retorno ' If cResultado < 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
- 5.7. Gerar PDF do DAMDFE [19-09-19]
5. Utilidades - « Anterior
5.6. Elimina Identação XML