gpt4 book ai didi

PHP TCPDF 多个 WriteHTML() 不工作

转载 作者:行者123 更新时间:2023-11-28 02:11:44 24 4
gpt4 key购买 nike

我编写了一些代码来创建报告,然后使用 TCPDF 将其导出为 .PDF。我想将报告的不同部分发送到邮件,因此我需要多次使用 WriteHTML() 函数来创建多个 pdf 文件并将它们保存在特定目录中。

    $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');

虽然我尝试将两个不同的文件导出到目录 exmpl ,但我实际上得到的只是一个文件 (example_046.pdf)。

我必须提到我可以多次使用 Output() 并且我已经做过这样的事情,但是我不能多次使用 writeHTML()。

任何解决方案将不胜感激,提前致谢 !

编辑

完整代码如下:

<?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');
*/

?>

最佳答案

你的问题是在 $pdf->Output('exmpl/example_045.pdf', 'I') 之后,好像脚本到此结束。为什么要拍到文件头。

你不能拍摄两个不同的头文件,如果你想生成两个不同的 pdf,我建议你使用函数输出字符串

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

因此文件系统上的这两个文件保存并拍摄。压缩文件并拍摄包含两个pdf的压缩文件头。

更新

在您的情况下,我会使用类似的方法:

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");

最终更新

正确的代码:

<?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);


?>

关于PHP TCPDF 多个 WriteHTML() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7899914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com