- 11.4. Utilidadades
11.4.4. Gerar PDF do DACTE [25-06-12] - 11.4.3. Envia e-mail [18-03-12]
« Anterior - 11.4.5. Identar XML
Próximo »
11.4.4. Gerar PDF do DACTE [25-06-12]
Gerar PDF do DACTE
Assinatura:
int geraPdfDACTE(string XML, string logo, string quadroRecibo, string visualizar, string parametros, out string msgResultado);
Descrição:
Funcionalidade gerar o PDF de XML do CT-e.
Exemplos para cumprimento "Lei da Transparência"
Optando o contribuinte pela informação dos valores aproximados dos tributos no documento fiscal, o "Valor Aproximado dos Tributos" calculado pela empresa (vTotTrib), correspondente a totalidade dos tributos federais, estaduais e municipais, cuja incidência influa na formação do respectivo preço de venda, aparecerá no DACTE no quadro de "Uso Exclusivo do Emissor do CT-e' , campo de Uso Livre do Contribuinte (tags: xCampo e xTexto, id:92 e 93).
Assim, como exemplo e sugestão: vTotTrib = R$ 152,00, xCampo = Lei da Transparência, xTexto = O valor aproximado de tributos incidentes sobre o preço deste serviço é de R$ 152,00.
<ObsCont xCampo="LEI DA TRANSPARENCIA"> <xTexto>O valor aproximado de tributos incidentes sobre o preço deste serviço é de R$ 152,00.</xTexto> </ObsCont>
Requisitos de uso:
- Componente Report.NET, a DLL Reports.dll deve existir na mesma pasta da DLL CTe_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 CT-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 CT-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 DACTE, 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 DACTE 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 CT-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 DACTE 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 CT-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 CT-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 |
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; [CTeId.PDF] -> grava arquivo com nome = chave de acesso do CT-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; [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 DACTE; [SEM QUADRO EMITENTE] -> não imprime os dados do emitente e nem o quadro do emitente para atender quem tem impresso personalizado; [SumatraPDF] -> indica o uso do SumatraPDF para visualização e impressão do PDF, necessário ter o SumatraPDF na pasta da aplicação; [MENSAGEMRECIBO=mensagem] -> permite indicar o texto que será mostrado no quadro do Recibo de Entrega (canhoto); [MarcaDagua=xml] -> permite acrescentar imagens no DACTE, informar um XML com pelo menos uma figura; [AltQuadroRECIBO=n] -> onde n >= 18 e <= 40 - para permitir a personalização da altura do quadro do Recibo; [DadosEmissor=xml] -> permite a personalização dos dados do emissor; [OBSCONTRIBUINTE] -> imprimir os dados informados em ObsCont no quadro de uso exclusivo do emitente - sem qualquer formatação ou quebra de linha, assim recomendamos usar as obs geral; [OBSFISCO] -> imprimir os dados informados em ObsFisco no quadro de uso exclusivo do fisco - sem qualquer formatação ou quebra de linha, assim recomendamos usar as obs geral; [MOSTRADADOSTOMADOR] -> se deseja mostrar os dados do tomador que é remetente, expedidor, recebedor ou destinatário. Por padrão a DLL não mostra os dados do tomador que já consta como parte no CT-e, exemplo: se o tomador for o destinatário, a DLL só irá indicar (Destinatário nos dados do tomador; [EPEC=numero protocolo de registro EPEC] -> para mostrar o número do protocolo do registro do EPEC no DACTE; |
msgResultado | string | saída | retorna a literal do resultado da chamada do WS. |
Exemplos de parâmetros parametros"
parametros = "[RODAPE=Powered by CTe_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 CTe_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 DACTE.
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 DACTE do CT-e: [chave do CT-e] foi gerado com sucesso | DLL | - |
7901 | PDF da DACTE do CT-e: [chave do CT-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 CT-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 CT-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:
- 2012-10-30 - v1.2 - 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 CT-e da versão 1.04 Dim logo As String ' nome arquivo do logotipo Dim quadroRecibo As String ' posicão de impressão do quadroRecibo [S]uperior [I]nferior 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 nomeArquivoCTe As String ' nome do arquivo procCTe que será lido nomeArquivoCTe = "c:\procCTe_000001294.xml" On Error GoTo 0 ' Carrega o conteúdo do nome do arquivo em XMLString ' Open nomeArquivoCTe 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 "S" ou rodape "I" 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 DACTE ' 'parametros = "[RODAPE=Powered by CTe_Util.dll - FlexDocs Documentos Eletronicos - (C) 2013 - Todos os direitos reservados.][IMPRIMIR=1][ARQUIVO=TESTE.PDF][PASTA=C:\]" parametros = "[RODAPE=Powered by CTe_Util.dll - FlexDocs Documentos Eletronicos - (C) 2013 - Todos os direitos reservados.][ARQUIVO=TESTE.PDF][PASTA=C:\]" cResultado = 0 msgResultado = "" ' ' instancia a DLL - late binding ' Dim objCTeUtil As Object ' Set objCTeUtil = CreateObject("CTe_Util.Util") ' ' chama DLL ' 'geraPdfDACTE(string XML, string _logo, string _quadroRecibo, string _visualizar, string _parametros, out string msgResultado) ' cResultado = objCTeUtil.geraPdfDACTE(XML, logo, quadroRecibo, 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 ' ' liberar DLL ' Set objCTeUtil = Nothing
- 11.4.4. Gerar PDF do DACTE [25-06-12]
11.4. Utilidadades - « Anterior
11.4.3. Envia e-mail [18-03-12] - Próximo »
11.4.5. Identar XML