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:

Personalização possíveis

         <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

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


       <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:

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:

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