He escrito algún código que crea los informes y, a continuación, lo exporta .PDF con TCPDF.
Quiero enviar a diferentes partes del informe de correo electrónico , para ello necesito para utilizar la función WriteHTML() más de una vez en el fin de crear varios archivos pdf y guardarlos en un directorio específico.

    $parts=explode("<div class='subTable'>",$html);
    pdf->writeHTML($html, true, false, false, false, '');
    $pdf->Output('exmpl/example_045.pdf', 'I');
    $pdf->Output('exmpl/example_046.pdf', 'F');
    $pdf->writeHTML($parts[2], true, 0, true, 0);
    //Close and output PDF document
    $pdf->Output('exmpl/example_048.pdf', 'F');

Aunque me intente exportar los dos archivos diferentes para el directorio exmpl , todo lo que realmente se obtiene es un archivo (example_046.pdf).

Tengo que mencionar que me puede utilizar la Salida() más de una vez y ya he hecho tal cosa, pero yo simplemente no puede usar writeHTML() más de una vez.

Cualquier solución será apreciado,
Gracias de antemano !

EDITAR

Aquí el código completo :

<?php
function createPDF($html, $type, $filename, $output,$saleStart,$saleEnd,$reportType)
{
//REQUIRE TCPDF
require_once('tcpdf/config/lang/eng.php');
require_once('tcpdf/config/lang/heb.php');
require_once('tcpdf/tcpdf.php');
class MYPDF extends TCPDF {
//Page header
public function Header() {
//Set font
$this->SetFont('helvetica', 'B', 20);
//Title
$this->Cell(0, 15, '<< TCPDF Example 003 >>', 0, false, 'C', 0, '', 0, false, 'M', 'M');
}
//Page footer
public function Footer() {
//Position at 15 mm from bottom
$this->SetY(-15);
//Set font
$this->SetFont('helvetica', 'I', 8);
//Page number
$this->Cell(0, 10, 'Page '.$this->getAliasNumPage().'/'.$this->getAliasNbPages(), 0, false, 'C', 0, '', 0, false, 'T', 'M');
}
}
//create new PDF document
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
//set document information
/*
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Nicola Asuni');
$pdf->SetTitle('TCPDF Example 018');
$pdf->SetSubject('TCPDF Tutorial');
$pdf->SetKeywords('TCPDF, PDF, example, test, guide');
*/
//SET CUSTOMIZED DATE INCLUDED HEADER
$headerSDate=reverseLongDate($saleStart);
$headerEDate=reverseLongDate($saleEnd);
$header="";
$header.="\t";
$header.=Date("d-m-Y h:m:s");
$header.="\n";
$header.='מועדון המגדלים יוסי חותה פירות וירקות';
$header.="\n";
if($reportType=='customer')
{
$header.='דו"ח שיווק ללקוח לתאריכים '.$headerSDate." עד ".$headerEDate;
}
else
if($reportType=='newCustomer')
{
$header.='דו"ח שיווק ללקוח לתאריכים '.$headerSDate." עד ".$headerEDate;
}
else 
if($reportType=='collection')
{
$header.='דו"ח גביה ללקוח לתאריכים '.$headerSDate." עד ".$headerEDate;
}
else 
if($reportType=='grower')
{
$header.='דו"ח מגדל ללקוח לתאריכים '.$headerSDate." עד ".$headerEDate;
}
$pdf->SetHeaderData("","" ,"",$header); 
//$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);
//set header and footer fonts
$pdf->setHeaderFont(Array("dejavusans", '', "15"));
$pdf->setFooterFont(Array("dejavusans", '', "12"));
//set default monospaced font
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
//set margins
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(0);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
//set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
//set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
//set some language dependent data:
$lg = Array();
$lg['a_meta_charset'] = 'UTF-8';
$lg['a_meta_dir'] = 'rtl';
$lg['a_meta_language'] = 'fa';
$lg['w_page'] = 'page';
//set some language-dependent strings
$pdf->setLanguageArray($lg);
//---------------------------------------------------------
//set font
$pdf->SetFont('dejavusans', '', 12);
//add a page
$pdf->AddPage();
//-----------------------------------------------------------------------------
if($type == "all"){
$pdf->writeHTML($html, true, false, false, false, '');
} elseif($type == "partial"){
$parts = explode("<div class='subTable'>", $html);
$pdf->writeHTML($parts[2], true, 0, true, 0);
}
ob_clean();
$pdf->Output('exmpl/' . $filename . '.pdf', $output);
} //END_OF_FUNCTION
set_time_limit(0);
require('modifyDate.php');
require('createQuery.php');
//GET FORM DATA
if(isset($_POST['submitMeshavek']))
{
$saleStart=$_POST['saleStart'];
$saleEnd=$_POST['saleEnd'];
$saleWeek=$_POST['weekId'];
$growerId=$_POST['growerId'];
$reportType=$_POST['reportType'];
}
/*
$regularSaleStart=reverseDate($saleStart);
$regularSaleEnd=reverseDate($saleEnd);
$header='<h2>מועדון מגדלים יוסי חותה פירות וירקות</h2>';
$header.="דוח שיווק ללקוח לתאריכים                 ".$regularSaleEnd." ".$regularSaleStart;
public function Header() {
//Set font
$this->SetFont('dejavusans', '', 10);
//Title
$this->Cell(0, 15, '<< TCPDF Example 003 >>', 0, false, 'C', 0, '', 0, false, 'M', 'M');
}
*/
if($reportType=='customer')
{
include('reportType/customer.php');
}
else
if($reportType=='newCustomer')
{
include('reportType/customerNew.php');
}
else 
if($reportType=='collection')
{
include('reportType/collect.php');
}
else 
if($reportType=='grower')
{
include('reportType/grower.php');
}
createPDF($html, "all", "example_045", "I",$saleStart,$saleEnd,$reportType);                    
createPDF($html, "partial", "example_048", "F",$saleStart,$saleEnd,$reportType);
createPDF($html, "all", "example_046", "F",$saleStart,$saleEnd,$reportType);
/*
ob_clean();
//$pdf->writeHTML($html, true, false, false, false, '');
$pdf->writeHTML($html, true, 0, true, 0);
//Close and output PDF document
$pdf->Output('example_048.pdf', 'I');
$pdf->writeHTML($html, true, 0, true, 0);
//Close and output PDF document
$pdf->Output('examp.pdf', 'I');
*/
?>
InformationsquelleAutor | 2011-10-26

2 Comentarios

  1. 1

    El problema es que después de la $pdf->Output('exmpl/example_045.pdf', 'I'), y como si el guión termina allí. ¿Por qué disparar a la cabecera del archivo.

    No se puede disparar en dos diferentes archivos de encabezado, si desea generar dos distintas pdf te recomiendo ir con la función devuelve la cadena

    $pdf->Output('', 'S');

    por lo tanto estos dos archivos en el sistema de ficheros y guardarlos y disparar.
    Comprimir los archivos y disparar el encabezado del archivo zip que contiene los dos pdf.

    ACTUALIZACIÓN

    en tu caso, me gustaría utilizar un enfoque similar:

    function createPDF($html, $type, $filename, $output)
    {
    $pdf = new TCPDF();
    //... code ...
    if($type == "all"){
    $pdf->writeHTML($html, true, false, false, false, '');
    } elseif($type == "partial"){
    $parts = explode("<div class='subTable'>", $html);
    $pdf->writeHTML($parts[2], true, 0, true, 0);
    }
    $pdf->Output('exmpl/' . $filename . '.pdf', $output);
    }
    createPDF($html, "partial", "example_048", "F");
    createPDF($html, "all", "example_046", "F");
    createPDF($html, "all", "example_045", "I");

    Última Actualización

    código de derecho:

    <?php
    //REQUIRE TCPDF
    require_once('tcpdf/config/lang/eng.php');
    require_once('tcpdf/config/lang/heb.php');
    require_once('tcpdf/tcpdf.php');
    class MYPDF extends TCPDF
    {
    //Page header
    public function Header()
    {
    //Set font
    $this->SetFont('helvetica', 'B', 20);
    //Title
    $this->Cell(0, 15, '<< TCPDF Example 003 >>', 0, false, 'C', 0, '', 0, false, 'M', 'M');
    }
    //Page footer
    public function Footer()
    {
    //Position at 15 mm from bottom
    $this->SetY(-15);
    //Set font
    $this->SetFont('helvetica', 'I', 8);
    //Page number
    $this->Cell(0, 10, 'Page ' . $this->getAliasNumPage() . '/' . $this->getAliasNbPages(), 0, false, 'C', 0, '', 0, false, 'T', 'M');
    }
    //Create PDF
    function createPDF($html, $type, $filename, $output, $saleStart, $saleEnd, $reportType)
    {
    //create new PDF document
    $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
    //set document information
    /*
    $pdf->SetCreator(PDF_CREATOR);
    $pdf->SetAuthor('Nicola Asuni');
    $pdf->SetTitle('TCPDF Example 018');
    $pdf->SetSubject('TCPDF Tutorial');
    $pdf->SetKeywords('TCPDF, PDF, example, test, guide');
    */
    //SET CUSTOMIZED DATE INCLUDED HEADER
    $headerSDate = reverseLongDate($saleStart);
    $headerEDate = reverseLongDate($saleEnd);
    $header = "";
    $header .= "\t";
    $header .= Date("d-m-Y h:m:s");
    $header .= "\n";
    $header .= 'מועדון המגדלים יוסי חותה פירות וירקות';
    $header .= "\n";
    if ($reportType == 'customer') {
    $header .= 'דו"ח שיווק ללקוח לתאריכים ' . $headerSDate . " עד " . $headerEDate;
    }
    elseif ($reportType == 'newCustomer') {
    $header .= 'דו"ח שיווק ללקוח לתאריכים ' . $headerSDate . " עד " . $headerEDate;
    }
    elseif ($reportType == 'collection') {
    $header .= 'דו"ח גביה ללקוח לתאריכים ' . $headerSDate . " עד " . $headerEDate;
    }
    elseif ($reportType == 'grower') {
    $header .= 'דו"ח מגדל ללקוח לתאריכים ' . $headerSDate . " עד " . $headerEDate;
    }
    $pdf->SetHeaderData("", "", "", $header);
    //$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);
    //set header and footer fonts
    $pdf->setHeaderFont(Array("dejavusans", '', "15"));
    $pdf->setFooterFont(Array("dejavusans", '', "12"));
    //set default monospaced font
    $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
    //set margins
    $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
    $pdf->SetHeaderMargin(0);
    $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
    //set auto page breaks
    $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
    //set image scale factor
    $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
    //set some language dependent data:
    $lg = Array();
    $lg['a_meta_charset'] = 'UTF-8';
    $lg['a_meta_dir'] = 'rtl';
    $lg['a_meta_language'] = 'fa';
    $lg['w_page'] = 'page';
    //set some language-dependent strings
    $pdf->setLanguageArray($lg);
    //---------------------------------------------------------
    //set font
    $pdf->SetFont('dejavusans', '', 12);
    //add a page
    $pdf->AddPage();
    //-----------------------------------------------------------------------------
    if ($type == "all") {
    $pdf->writeHTML($html, true, false, false, false, '');
    } elseif ($type == "partial") {
    $parts = explode("<div class='subTable'>", $html);
    $pdf->writeHTML($parts[2], true, 0, true, 0);
    }
    ob_clean();
    $pdf->Output('exmpl/' . $filename . '.pdf', $output);
    } //END_OF_FUNCTION
    }
    set_time_limit(0);
    require('modifyDate.php');
    require('createQuery.php');
    //GET FORM DATA
    if (isset($_POST['submitMeshavek'])) {
    $saleStart = $_POST['saleStart'];
    $saleEnd = $_POST['saleEnd'];
    $saleWeek = $_POST['weekId'];
    $growerId = $_POST['growerId'];
    $reportType = $_POST['reportType'];
    }
    if ($reportType == 'customer') {
    include('reportType/customer.php');
    }
    elseif ($reportType == 'newCustomer') {
    include('reportType/customerNew.php');
    }
    elseif ($reportType == 'collection') {
    include('reportType/collect.php');
    }
    elseif ($reportType == 'grower') {
    include('reportType/grower.php');
    }
    $myPdf = new MYPDF();
    $myPdf->createPDF($html, "partial", "example_048", "F", $saleStart, $saleEnd, $reportType);
    $myPdf->createPDF($html, "all", "example_046", "F", $saleStart, $saleEnd, $reportType);
    $myPdf->createPDF($html, "all", "example_045", "I", $saleStart, $saleEnd, $reportType);
    ?>
    • Primero de todo , gracias por el comentario , pero todavía no puedo entender – ¿cómo podría Salida(«,’S’) que me ayude a salvar a dos diferentes archivos pdf en un directorio ?
    • puedo añadir mi solución!
    • Hey, realmente aprecio su ayuda. He utilizado la solución, pero tengo el mismo problema de nuevo : todo lo que se obtiene es el primer archivo – example_048.. ¿tienes alguna sugerencia ?
    • extraño! seguro usar mi enfoque? Puede publicar su código completo para que puedas encontrar el error?
    • Hola, he publicado todo el código. Se han de intentar una y otra vez, pero TCPDF sólo se pone loco y salidas sólo example_048
    • Espero que cometió un error al pegar el código, porque lo que has publicado es incomprensible e inútil en php! :S
    • Funciona bien para mí , el problema puede estar en el HEBREO de salida . Intente guardar el archivo con codificación UTF-8, que debería solucionar el problema
    • permítanos continuar esta discusión en el chat

  2. 0

    de tcpdf docs

    Enviar el documento a un destino dado … El primer método llamadas
    Close() si es necesario para terminar el documento.

    por lo que necesita para crear otro $pdf instancia de la causa después de Output() es que no termina de usar writeHTML() de nuevo

Dejar respuesta

Please enter your comment!
Please enter your name here