public function danfe() { require_once 'nfephp/libs/NFe/DanfeNFePHP.class.php'; if ($_FILES['nota']['type'] != "text/xml") { $this->Session->setFlash('O arquivo deve ser do tipo xml! ', 'default'); return $this->redirect('/nfe/gerar_danfe'); } $arq = $_FILES["nota"]["tmp_name"]; if (is_file($arq)) { $docxml = file_get_contents($arq); $danfe = new DanfeNFePHP($docxml, 'P', 'A4', '../images/logo.jpg', 'I', ''); $id = $danfe->montaDANFE(); $imprime_danfe = $danfe->printDANFE($id . '.pdf', 'I'); } unlink($arq); }
<?php // Passe para este script o arquivo da NFe // Ex. testaDANFE.php?nfe=35100258716523000119550000000033453539003003-nfe.xml require_once '../libs/DanfeNFePHP.class.php'; //$arq = $_GET['nfe']; $arq = 'xml/35101158716523000119550010000000011003000000-nfe.xml'; if (is_file($arq)) { $docxml = file_get_contents($arq); $danfe = new DanfeNFePHP($docxml, 'P', 'A4', '../images/logo.jpg', 'I', ''); $id = $danfe->montaDANFE(); $teste = $danfe->printDANFE($id . '.pdf', 'I'); }
/** * autoPrintSend * Este método deve imprmir automaticamente as DANFEs de todas as * NFe localizadas na pasta aprovadas, enviar o email ao destinatário * com a DANFE em pdf e o arquivo xml e ainda mover a NFe em xml * para o diretorio de armazenamento com o ANOMES da nota para facilitação * da adminstração e backup * * @version 2.07 * @package NFePHP * @author Roberto L. Machado <linux.rlm at gmail dot com> * @param boolean $fixpdf Indica de deve ser gravado ou não o pdf da NFe * @return boolean True se OK ou False se falha */ public function autoPrintSend($fixpdf = false) { //varre a pasta de enviadas/aprovadas $aNApr = $this->listDir($this->aprDir, '*-nfe.xml', false); //se houver algum arquivo *-nfe.xml continua, caso contrario sai if (count($aNApr) > 0) { //para cada arquivo nesta pasta imprimir a DANFE em pdf // e enviar para a printer // SÓ FUNCIONA ATÉ 2099 !!!!! foreach ($aNApr as $file) { $anomes = '20' . substr($file, 2, 4); $docxml = file_get_contents($this->aprDir . $file); $danfe = new DanfeNFePHP($docxml, $this->danfepaper, $this->danfeform, $this->danfelogopath, 'I', '', $this->danfefont); $id = (string) $danfe->montaDANFE(); $pdfName = $id . '.pdf'; //carrega a DANFE como uma string para gravação no diretorio escolhido $pdfFile = (string) $danfe->printDANFE($this->pdfDir . $pdfName, 'S'); if ($pdfFile != '') { //grava a DANFE como pdf no diretorio if (!file_put_contents($this->pdfDir . $pdfName, $pdfFile)) { //houve falha na gravação $this->errMsg = "Falha na gravação do pdf.\n"; $this->errStatus = true; } else { //em caso de sucesso, verificar se foi definida a printer se sim imprimir //este comando de impressão funciona tanto em linux como em wndows se o //ambiente estiver corretaente preparado if ($this->danfeprinter != '') { $command = "lpr -P {$this->danfeprinter} {$this->pdfDir}{$pdfName}"; system($command); } } } else { //houve falha na geração da DANFE $this->errMsg = "Falha na geração da DANFE.\n"; $this->errStatus = true; } //arquivo da NFe com o protocolo $dom = new DOMDocument(); //cria objeto DOM $dom->formatOutput = false; $dom->preserveWhiteSpace = false; $dom->loadXML($docxml); $ide = $dom->getElementsByTagName("ide")->item(0); $emit = $dom->getElementsByTagName("emit")->item(0); $dest = $dom->getElementsByTagName("dest")->item(0); $ICMSTot = $dom->getElementsByTagName("ICMSTot")->item(0); $obsCont = $dom->getElementsByTagName("obsCont")->item(0); $infNFe = $dom->getElementsByTagName('infNFe')->item(0); //obtem a versão do layout da NFe $ver = trim($infNFe->getAttribute("versao")); $razao = utf8_decode($dest->getElementsByTagName("xNome")->item(0)->nodeValue); $numero = str_pad($ide->getElementsByTagName('nNF')->item(0)->nodeValue, 9, "0", STR_PAD_LEFT); $serie = str_pad($ide->getElementsByTagName('serie')->item(0)->nodeValue, 3, "0", STR_PAD_LEFT); $emitente = utf8_decode($emit->getElementsByTagName("xNome")->item(0)->nodeValue); $vtotal = number_format($ICMSTot->getElementsByTagName("vNF")->item(0)->nodeValue, 2, ",", "."); $email = ''; $contato = ''; //NFe ver 1.10 - obter o email de envio //na proxima revisão não será mais inclusa a verificação da //versão 1.10 que passará a ser resconsiderada if ($ver == '1.10') { if (isset($obsCont)) { foreach ($obsCont as $obs) { $campo = $obsCont->item($i)->getAttribute("xCampo"); $xTexto = !empty($obsCont->item($i)->getElementsByTagName("xTexto")->item(0)->nodeValue) ? $obsCont->item($i)->getElementsByTagName("xTexto")->item(0)->nodeValue : ''; if (substr($campo, 0, 5) == 'email' && $xTexto != '') { $email .= $xTexto . ','; } $i++; } } } else { //NFe ver 2.00 $email = !empty($dest->getElementsByTagName("email")->item(0)->nodeValue) ? utf8_decode($dest->getElementsByTagName("email")->item(0)->nodeValue) : ''; if (isset($obsCont)) { foreach ($obsCont as $obs) { $campo = $obsCont->item($i)->getAttribute("xCampo"); $xTexto = !empty($obsCont->item($i)->getElementsByTagName("xTexto")->item(0)->nodeValue) ? $obsCont->item($i)->getElementsByTagName("xTexto")->item(0)->nodeValue : ''; if (substr($campo, 0, 5) == 'email' && $xTexto != '') { $email .= $xTexto . ','; } $i++; } } } //endif if ($email != '') { //montar a matriz de dados para envio do email $aEMail = array('emitente' => $emitente, 'para' => $email, 'contato' => '', 'razao' => $razao, 'numero' => $numero, 'serie' => $serie, 'vtotal' => $vtotal); //inicalizar a classe de envio $nfeMail = new MailNFePHP($this->aMail); if (!$nfeMail->sendNFe($docxml, $pdfFile, $file, $pdfName, $aEMail)) { $this->errMsg = "Falha no envio do email ao destinatário!!\n"; $this->errStatus = true; } } //mover o arquivo xml para a pasta de arquivamento identificada com o ANOMES $diretorio = $this->aprDir . $anomes . DIRECTORY_SEPARATOR; if (!is_dir($diretorio)) { mkdir($diretorio, 0777); } rename($this->aprDir . $file, $diretorio . $file); //apagar o pdf criado para envio if (!$fixpdf) { if (is_file($this->pdfDir . $pdfName)) { unlink($this->pdfDir . $pdfName); } } } //end foreach } //endif return true; }
<?php require_once '../libs/NFe/DanfeNFePHP.class.php'; $docxml = $_POST['xml']; $cnpj = $_POST['cnpj']; $logo = 'logos/' . $cnpj; if (is_file($logo)) { $danfe = new DanfeNFePHP($docxml, 'P', 'A4', $logo, 'I', ''); } else { $danfe = new DanfeNFePHP($docxml, 'P', 'A4', '', 'I', ''); } $id = $danfe->montaDANFE(); $impresso = $danfe->printDANFE($id . '.pdf', 'I');