PDF com várias notas

458 views
Skip to first unread message

Rodrigo

unread,
Jul 23, 2013, 4:28:59 PM7/23/13
to nfe...@googlegroups.com
Boa tarde,

Alguem sabe se consigo gerar o pdf com várias notas?

Tentei o exemplo do topico abaixo mais não tive sucesso.

Obrigado.


Rodrigo.

Andreus Timm

unread,
Jul 23, 2013, 4:35:40 PM7/23/13
to nfe...@googlegroups.com

Andreus Timm - Consultor de TI
Empresa: www.zorbit.com.br
Blog: www.andreustimm.com.br
Skype: andreus.timm


--
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Para Postar: nfe...@googlegroups.com
Para Sair do Grupo: nfephp+un...@googlegroups.com
Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositório: https://github.com/nfephp-org/nfephp
---
Você está recebendo esta mensagem porque se inscreveu no grupo "NFePHP" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para nfephp+un...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 

Fernando Mertins

unread,
Jul 23, 2013, 4:41:20 PM7/23/13
to nfe...@googlegroups.com
Oi, não olhei o tópico, mas entendo que se formos implementar este requisito, devemos chama-lo de algo como "Relatorio de DANFE", pois seria um PDF contendo vários DANFEs...

Em outras palavras, DANFE é uma coisa, relatório de múltiplos DANFEs em sequencia é outra coisa... :-)



Em 23 de julho de 2013 17:28, Rodrigo <rodr...@gmail.com> escreveu:

--

Andreus Timm

unread,
Jul 23, 2013, 4:47:42 PM7/23/13
to nfe...@googlegroups.com
Só para esclarecer um pouco melhor a dúvida, isso seria uma rotina de consolidação de DANFE's (impressão em LOTE) digamos assim.

Sugiro depois que vc gerar cada DANFE, vc agrupar elas em um PDF, temporariamente, para poder imprimir.

Andreus Timm - Consultor de TI
Empresa: www.zorbit.com.br
Blog: www.andreustimm.com.br
Skype: andreus.timm


Rodrigo

unread,
Jul 23, 2013, 4:57:50 PM7/23/13
to nfe...@googlegroups.com
Justamente Andreus, não seria a impressão direta, somente gerar o PDF para o usuário no Browser.

Tentei esse exemplo abaixo mas sempre retorna uma NFe.
Se funcionar é o que eu preciso.
<?php
// Passe para este script o arquivo da NFe
// Ex. printDANFE.php?nfe=35100258716523000119550000000033453539003003-nfe.xml

require_once('../libs/DanfeNFePHP.class.php');

//$arq = $_GET['nfe'];
//$arq='./35100406315070000115550010000000180199467603-nfe.xml';
//$arq='./35100258716523000119550000000033453539003003-nfe.xml';
//$arq='./35100459462366000125550010000013490224813007-nfe.xml';

$arq1 = '10900358000477/35130410900358000477550010000000671002255560.xml';
$arq2 = '10900358000477/35130410900358000477550010000000681002311335.xml';



if ( is_file($arq1) && is_file($arq2)  ){
    $pdf=new PdfNFePHP('P', 'mm', 'A4'); // classe PDF que irá contem os 2 DANFEs
    
    $docxml1 = file_get_contents($arq1);
    $docxml2 = file_get_contents($arq2);
    
    $tmp_status=NFEPHP_SITUACAO_EXTERNA_NONE; // NFEPHP_SITUACAO_EXTERNA_NONE=0
    
    // arquivo 1
    $danfe = new DanfeNFePHP($docxml1, 'P', 'A4','../images/logo.jpg','I','');
    $id = $danfe->montaDANFE('','A4','C',$tmp_status,$pdf);
    
    // arquivo 2
    // observe que a classe $danfe não precisa permanecer instanciada, pode ser "excluida", 
    // oque importa é a classe $pdf para emitir varias notas
    $danfe = new DanfeNFePHP($docxml2, 'P', 'A4','../images/logo.jpg','I','');
    $id = $danfe->montaDANFE('','A4','C',$tmp_status,$pdf);
    
    
    $teste = $danfe->printDANFE('multiplos.pdf','I');
}
?>

Desde já obrigado a todos pela atenção.

Rodrigo

unread,
Jul 23, 2013, 5:01:48 PM7/23/13
to nfe...@googlegroups.com
No meu caso que o cliente emite mais de 200 Nfes por dia, seria interessante este recurso.

Hoje ele emite 20 por vez, mas imprime uma a uma.

At,

Rodrigo


Em terça-feira, 23 de julho de 2013 17h28min59s UTC-3, Rodrigo escreveu:

Ederson Pereira de Brito

unread,
Jul 23, 2013, 6:21:15 PM7/23/13
to nfe...@googlegroups.com
Parece ser muito legal este pdftk e facil de usar.
Se voce tiver um exemplo de como esta utilizando seria ótimo.


--

Sandro Neuhaus

unread,
Jul 23, 2013, 8:09:24 PM7/23/13
to nfe...@googlegroups.com
Buenas pessoal;

Galera, acho que esses recursos são legais, mas servem para quem está juntando documentos de texto. No caso de sistema temos que usar bibliotecas PHP, como FPDF ou TCPDF.

Andei fazendo alguns testes e gostei muito de uma terceira que é baseada na FPDF, chamada mPDF e gostei dela.

Att;
Neuhaus


--
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Para Postar: nfe...@googlegroups.com
Para Sair do Grupo: nfephp+un...@googlegroups.com
Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositório: https://github.com/nfephp-org/nfephp
---
Você está recebendo esta mensagem porque se inscreveu no grupo "NFePHP" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para nfephp+un...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 



--
Sandro José Neuhaus
Fone:   (61) 8296-7606
E-mail: sandro...@hotmail.com
           sandrone...@yahoo.com.br
           san...@binasul.com.br
Site:    www.binasul.com.br

mrpereira

unread,
Jul 23, 2013, 10:44:04 PM7/23/13
to nfe...@googlegroups.com
Eu tenho mais de 200 NFs por dia.

Eu gero PDF de cada NF antes e depois faço um merge com FPDF e FPDI.


Estou operando dessa forma quase 2 anos sem nenhum problema. Você gera PDF de cada NFe e depois junta eles em apenas 1 pdf para impressão.

Rodrigo

unread,
Jul 24, 2013, 8:21:51 AM7/24/13
to nfe...@googlegroups.com
Baixei a lib que o mrpereira passou e consegui fazer.

Segue o exemplo.


<?php
// Passe para este script o arquivo da NFe
// Ex. printDANFE.php?nfe=35100258716523000119550000000033453539003003-nfe.xml

require_once('../libs/DanfeNFePHP.class.php');
//require_once('../libfpdi/fpdf.php'); 
require_once('../libfpdi/fpdi.php'); 
//$arq = $_GET['nfe'];

$arq1 = '10900358000477/35130410900358000477550010000000671002255560.xml';
$arq2 = '10900358000477/35130410900358000477550010000000681002311335.xml';


if ( is_file($arq1) && is_file($arq2)  ){
    $pdf=new PdfNFePHP('P', 'mm', 'A4'); // classe PDF que irá contem os 2 DANFEs
    
    $docxml1 = file_get_contents($arq1);
    $docxml2 = file_get_contents($arq2);
    
    $tmp_status=1;//NFEPHP_SITUACAO_EXTERNA_NONE; // NFEPHP_SITUACAO_EXTERNA_NONE=0
    
    // arquivo 1
    $danfe = new DanfeNFePHP($docxml1, 'P', 'A4','../images/logo.jpg','F','../temp');
    $id = $danfe->montaDANFE('','A4','C',$tmp_status,$pdf);
    $teste = $danfe->printDANFE('1.pdf','F');
    // arquivo 2
    // observe que a classe $danfe não precisa permanecer instanciada, pode ser "excluida", 
    // oque importa é a classe $pdf para emitir varias notas
    $danfe = new DanfeNFePHP($docxml2, 'P', 'A4','../images/logo.jpg','F','../temp');
    $id = $danfe->montaDANFE('','A4','C',$tmp_status,$pdf);
     
    $teste2 = $danfe->printDANFE('2.pdf','F');
}
 
class concat_pdf extends FPDI { 
 
    var $files = array(); 
 
    function setFiles($files) { 
        $this->files = $files; 
    } 
 
    function concat() { 
        foreach($this->files AS $file) { 
            $pagecount = $this->setSourceFile($file); 
            for ($i = 1; $i <= $pagecount; $i++) { 
                 $tplidx = $this->ImportPage($i); 
                 $s = $this->getTemplatesize($tplidx); 
                 $this->AddPage($s['w'] > $s['h'] ? 'L' : 'P', array($s['w'], $s['h'])); 
                 $this->useTemplate($tplidx); 
            } 
        } 
    } 
 
 
$pdf2 = new concat_pdf(); 
$pdf2->setFiles(array('1.pdf', '2.pdf')); 
$pdf2->concat(); 
 
$pdf2->Output('newpdf.pdf', 'D');
?>

mrpereira

unread,
Jul 24, 2013, 5:10:26 PM7/24/13
to nfe...@googlegroups.com
Que bom Rodrigo \o/

FPDI eu usava para gerar PDF com CMYK quando fiz um sistema de dados variáveis para gráfica.

Das que teste na época foi a única que aguentou um merge de 100 NFs

Maicon

Eduardo Machado

unread,
Jul 30, 2013, 12:48:13 PM7/30/13
to nfe...@googlegroups.com
Sobre o assunto, eu vi recentemente o seguinte tutorial:


Muito bom!

---
   Eduardo M. Machado
   Engenheiro de Computação
   Rio de Janeiro - RJ
   Brasil


--

Rafael Avila

unread,
Jul 30, 2013, 12:51:28 PM7/30/13
to nfephp
Tem um script no linux chamado pdftk que é bem legal: http://www.linuxdescomplicado.com.br/2011/11/maneira-mais-facil-para-unir-e-dividir.html

da pra manipular via linha de comando assim: pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf



2013/7/30 Eduardo Machado <eduardo...@gmail.com>



--
Rafael Ávila - Diretor Comercial
E-mail: raf...@apimenti.com.br
Cel: 71 9997-9709

Apimenti - Coisas para internet
E-mail: apim...@apimenti.com.br
Tel: 71 3334-5034
Site: www.apimenti.com.br

Roberto Spadim

unread,
Jul 30, 2013, 10:21:27 PM7/30/13
to nfe...@googlegroups.com
nossa quanta coisa

na pasta de exemplos mostra como fazer isso sem usar fpdf e coisas parecidas... só a api da nfephp

Edilson Belluomini

unread,
Jul 31, 2013, 8:14:15 AM7/31/13
to nfe...@googlegroups.com
Rodrigo,

Eu tenho uma aplicação rodando a versão 2.10 do DanfeNFePHP.class.php.

Essa versão dispunha do método loadXML que não sei por que foi retirada da versão atual.

Eu havia comentado a linha 323 (# $this->pdf->Open();) pois segundo o manual da classe fpdf, quando é chamada a função AddPage, caso não exista um documento aberto, ele abre (chama automaticamente a função Open).

Dai eu faço um loop chamando o método loadXML e montaDANFE da classe DanfeNFePHP.class.php, criando então um PDF com todas as notas que eu preciso.

No final eu chamo o método printDANFE, que me imprime o conteúdo de todas as notas solicitadas.

Roberto, será que voce poderia analisar essa situação, e caso considerar pertinente, poderia mudar a classe atual para incorporar essa função ?

Atenciosamente

Edilson Carlos Belluomini



Em terça-feira, 23 de julho de 2013 17h28min59s UTC-3, Rodrigo escreveu:

Roberto Spadim

unread,
Aug 1, 2013, 12:16:40 PM8/1/13
to nfe...@googlegroups.com
nem precisa mudar nada, ja esta implementado isso hoje, tem até exemplo, precisa testar, pois não sei porque tiraram do diretório de exemplos da atual versão no github

da pra juntar até danfe+eventos (cancelamento/carta correção) + inutilização + qlq outro tipo de pdf da nfephp (menos nfc-e que utiliza mpdf)


<?php
// Passe para este script o arquivo da NFe
// Ex. printDANFE.php?nfe=35100258716523000119550000000033453539003003-nfe.xml

require_once('../libs/DanfeNFePHP.class.php');

//$arq = $_GET['nfe'];
//$arq='./35100406315070000115550010000000180199467603-nfe.xml';
//$arq='./35100258716523000119550000000033453539003003-nfe.xml';
//$arq='./35100459462366000125550010000013490224813007-nfe.xml';

$arq1 = './35101158716523000119550010000000011003000000-nfe.xml';
$arq2 = './11101284613439000180550010000004881093997017-nfe.xml';



if ( is_file($arq1) && is_file($arq2)  ){
    $pdf=new PdfNFePHP('P', 'mm', 'A4'); // classe PDF que irá contem os 2 DANFEs
    
    $docxml1 = file_get_contents($arq1);
    $docxml2 = file_get_contents($arq2);
    
    $tmp_status=NFEPHP_SITUACAO_EXTERNA_NONE; // NFEPHP_SITUACAO_EXTERNA_NONE=0
    
    // arquivo 1
    $danfe = new DanfeNFePHP($docxml1, 'P', 'A4','../images/logo.jpg','I','');
    $id = $danfe->montaDANFE('','A4','C',$tmp_status,$pdf);
    
    // arquivo 2
    // observe que a classe $danfe não precisa permanecer instanciada, pode ser "excluida", 
    // oque importa é a classe $pdf para emitir varias notas
    $danfe = new DanfeNFePHP($docxml2, 'P', 'A4','../images/logo.jpg','I','');
    $id = $danfe->montaDANFE('','A4','C',$tmp_status,$pdf);
    
    
Reply all
Reply to author
Forward
0 new messages