nfephp-org/sped-da
Biblioteca PHP para gerar PDFs de documentos auxiliares do Sped (DANFE, DACTE, DAMDFE) a partir de XML, baseada nas classes legadas do NFePHP. Foco em conformidade SEFAZ, simplicidade e escopo genérico, sem customizações de sistema.
Classe que constroi o DANFE observando os paramêtros estabelecidos pela SEFAZ, com algums adicionais para facilitação de obtenção de informações para quem os recebe.
NOTA: exclusivo para XML de NFe (modelo 55)
Na instanciação da classe DANFE é obrigatório a passagem do XML da NFe modelo 55.
/**
* Construtor
* [@param](https://github.com/param) string $xml
* [@throws](https://github.com/throws) \Exception
*/
//somente são aceitos documentos XML devidamente formados e apenas NFe modelo 55 com ou sem protocolo de autorização
$xml = file_exists(__DIR__. '/arquivo_xml_nfe_modelo_55.xml');
$danfe2 = new Danfe2($xml);
/**
* Define parametros de impressão
* Este método não necessita ser invocado pois é setado por padrão com as condições default
* use apenas se desejar alterar as condições default
* [@param](https://github.com/param) string $orientacao
* [@param](https://github.com/param) string $papel
* [@param](https://github.com/param) int $margSup
* [@param](https://github.com/param) int $margEsq
* [@return](https://github.com/return) void
*/
$orientacao = ''; //se deixar em branco será usada a orientação indicada no XML, default = '', opções 'P' ou 'L', qualquer outra opção será ignorada
$papel = 'A4'; //default = 'A4', opção 'LEGAL' => recomenda-se usar sempre A4, qualquer outra opção será ignorada
$margSup = 2; //default = 2, cuidado com margens muito grandes pois diminuem em excesso a área de impressão
$margEsq = 2; //default = 2, cuidado com margens muito grandes pois diminuem em excesso a área de impressão
$danfe2->printParameters($orientacao, $papel, $margSup, $margEsq);
//NOTA: as margens inferior e direita são iguais à superior e esquerda, usadas como referencia
São os métodos que modificam e/ou acrescentam comportamentos e informações ao pdf que será criado.
Todos esses métodos são opcionais caso queira alterar o comportamento padrão da Danfe.
/**
* Define a font padrão a ser usada
* [@param](https://github.com/param) string $font
* [@return](https://github.com/return) void
*/
$font = 'times'; //opções times é a fonte obrigatória segundo a SEFAZ !! mas existe escolha para arial ou helvetica (ambas são iguais)
$danfe2->setDefaultFont($font); //default times exigido pelas SEFAZ
/**
* Exibe ou não, os textos referentas as tag obsItem/obsCont e obsItem/obsFisco
* [@param](https://github.com/param) bool $val
* [@return](https://github.com/return) void
*/
$danfe2->exibirObservacoesNFe(false); //default true
/**
* Exibe ou não, textos referentes a fatura caso não existam duplicatas e exista fatura
* [@param](https://github.com/param) bool $val
* [@return](https://github.com/return) void
*/
$danfe2->exibirFaturaNFe(false); //default true
/**
* Exibe ou não, o email do destinatário no bloco infCpl, caso seja informado o email
* [@param](https://github.com/param) bool $val
* [@return](https://github.com/return) void
*/
$danfe2->exibirEmailDestinatarioNFe(false); //default true
/**
* Exibe ou não, os dados de rastreamento dos ??????medicamentos em cada item, se existirem
* [@param](https://github.com/param) bool $val
* [@return](https://github.com/return) void
*/
$danfe2->exibirRastroItem(false); //default true
/**
* Exibe ou não, os dados do pedido do destinatário em cada item, se existirem
* [@param](https://github.com/param) bool $val
* [@return](https://github.com/return) void
*/
$danfe2->exibirPedidoItem(false); //default true
/**
* Exibe ou não, os dados de unidade tributável de cada item onde a unidade tributável for diferente da unidade comercial
* [@param](https://github.com/param) bool $val
* [@return](https://github.com/return) void
*/
$danfe2->exibirDadosTributaveisItem(false); //default true
/**
* Exibe ou não, informações de impostos adicionais como FCP na descrição de cada item, se houverem
* [@param](https://github.com/param) bool $val
* [@return](https://github.com/return) void
*/
$danfe2->exibirImpostosAdicionaisItem(false); //default true
/**
* Exibe ou não, o numero do item junto com o codigo de cada item
* [@param](https://github.com/param) bool $val
* [@return](https://github.com/return) void
*/
$danfe2->exibirNumeroItem(false); //default true
São métodos que incluem informações ao DANFE.
/**
* Exibe ou não, os dados do integrador e a mensagem "Powered by NFePHP®"
* [@param](https://github.com/param) string $message
* [@param](https://github.com/param) bool $powered
* [@return](https://github.com/return) void
*/
$message = 'WEBNFe Sistemas - http://www.webnfe.com.br'; //dados do integrador no rodapé da pagina
$powered = false; //exibe ou não o texto "Powered by NFePHP®" no rodapé da página
$danfe->creditsIntegratorFooter($message, $powered);
/**
* Estabelece o logo e sua posição ou use o render para passar a imagem usando posição default
* Este método não necessita ser invocado apenas para inserir a logo sem alterar sua posição
* apenas use esse método caso deseja alterar a posição da logomarca
* Dê preferencia ao método render() para inserir a logo, nos padrões default
* [@param](https://github.com/param) string $logo
* [@param](https://github.com/param) string $logoAlign
* [@param](https://github.com/param) bool $mode_bw se true converte a imagem em branco e preto
* [@return](https://github.com/return) void
*/
//as imagens devem ser JPEG ou PNG obrigatóriamente e com um tamanho reazoável, evite imagens muito grandes ou com elevada resolução
$logo = 'path da imagem'; //usar um caminho à imagem ou 'data://text/plain;base64,'. {string da imagem em base64}
//logo = 'data://text/plain;base64,'. base64_encode(file_get_contents(__DIR__ . '/tulipas.png'));
$logoAlign = 'C'; //default C-centro, opções L-Left ou R-Right
$mode_bw = false; //default false, converte a imagem para preto e branco
$danfe2->logoParameters($logo, $logoAlign, $mode_bw);
$danfe2->setCancelFlag(true): //default false
/**
* Renderizador, executa a montagem do PDF e retorna o pdf como string
* [@param](https://github.com/param) string $logo
* [@return](https://github.com/return) string
*/
$pdf = $danfe2->render($logo);
try {
//dados
$xml = file_get_contents(__DI__.'/arquivo_xml_nfe_modelo_55.xml');
$logo = 'data://text/plain;base64,'. base64_encode(file_get_contents(__DIR__ . '/tulipas.png'));
//inicialização
$danfe2 = new Danfe2($xml);
//Parametrização
//$orientacao = ''; //se deixar em branco será usada a orientação indicada no XML, default = '', opções 'P' ou 'L', qualquer outra opção será ignorada
//$papel = 'A4'; //default = 'A4', opção 'LEGAL' => recomenda-se usar sempre A4, qualquer outra opção será ignorada
//$margSup = 2; //default = 2, cuidado com margens muito grandes pois diminuem em excesso a área de impressão
//$margEsq = 2; //default = 2, cuidado com margens muito grandes pois diminuem em excesso a área de impressão
//$danfe2->printParameters($orientacao, $papel, $margSup, $margEsq);
//modificadores
$danfe2->exibirFatura(false); //default true
$danfe2->exibirRastro(false); //default true
$danfe2->exibirPedido(false); //default true
$danfe2->exibirUnidadeTributavel(false); //default true
$danfe2->exibirImpostosAdicionais(false); //default true
$danfe2->exibirEmail(false); //default true
$danfe2->exibirNumeroItem(false); //default true
$danfe2->exibirObservacoes(false); //default true
//adicionais
$danfe->creditsIntegratorFooter('WEBNFe Sistemas - http://www.webenf.com.br', true);
$danfe->logoParameters($logo, 'L', true);
//finalização
$pdf = $danfe->render();
//o pdf porde ser exibido como view no browser
//salvo em arquivo
//ou setado para download forçado no browser
//ou ainda gravado na base de dados
header('Content-Type: application/pdf');
echo $pdf;
} catch (\Exception $e) {
echo "Ocorreu um erro durante o processamento: " . $e->getMessage();
}
How can I help you explore Laravel packages today?