2016-03-05 150 views
0

我正在嘗試生成證書的pdf文檔。該列表來自表單帖子。使用直接的php,沒有tcpdf代碼,它會生成每個證書。當我添加tcpdf代碼時,它只會生成1個證書。 感謝使用TCPDF和PHP生成PDF頁面

// set font 
$pdf->SetFont('times', '', 20); 
// add a page 
$pdf->AddPage(); 

// LOOP 
    while ($rowPart = mysql_fetch_array($result)) 
     { 
    $PartName = ucfirst(strtolower($rowPart['firstname'])) . " " . ucfirst(strtolower($rowPart['lastname'])); 
// PDF STARTS HERE************************** 
    $pdf->SetTextColor(255, 0, 0); 
    $pdf->SetFont('alexbrush', '', 35); 
    $pdf->SetY(67); 
    $pdf->Cell(0, 0, $PartName, 0, 0, 'C', 0, '', 3); 
    $pdf->SetFont('helveticaB', '', 15); 
    $pdf->SetY(127); 
    $pdf->Cell(0, 0, $SemDesc, 0, 1, 'C', 0, '', 3); 
    $pdf->SetY(135); 
    $pdf->Cell(0, 0, $SemName, 0, 1, 'C', 0, '', 3); 
    $pdf->Ln(); 
     } 
// LOOP ENDS HERE************************** 

//Close and output PDF document 
$pdf->Output('certificate.php', 'I'); 

回答

0

嘗試在循環的開始,而不是之前添加了新的一頁。我認爲你正在創建一個頁面並將其寫入你的循環中。

編輯: 另外,在循環中的最後一行代碼上添加調用endPage()函數。

+1

謝謝加文。我在循環內移動了AddPage,仍然只有1個Cert。 ($ rowPart = mysql_fetch_array($ result)) { // //添加一個頁面 $ pdf-> AddPage(); //添加頁面 $ PartName = ucfirst(strtolower($ rowPart ['firstname']))。 「」。 ucfirst(用strtolower($ rowPart [ '姓氏'])); // PDF從這裏開始************************** $ pdf-> SetTextColor(255,0,0);' –

+0

已編輯答案... – Gavin

+0

還只是1. grrr!當我在循環中刪除TCPDF並回顯$ PartName時,我得到了預期的結果。 –

0

想展示完整的代碼從我檢查後開始:

if (is_array($_POST['partSel'])) { 
// START CERTIFICATE PRINT 

// Include the main TCPDF library (search for installation path). 
require_once('tcpdf/tcpdf.php'); 
// Define Paramaters 
define('IMG_PATH', 'certificates/'); 

// Extend the TCPDF class to create custom Header and Footer 
class ETCPDF extends TCPDF { 
//Page header 
public function Header() { 
// get the current page break margin 
    $bMargin = $this->getBreakMargin(); 
// get current auto-page-break mode 
    $auto_page_break = $this->AutoPageBreak; 
// disable auto-page-break 
    $this->SetAutoPageBreak(false, 0); 
// set bacground image 
    $img_file = IMG_PATH.'etc_cert.png'; 
    $this->Image($img_file, 0, 0, 297, 210, '', '', '', false, 300, '', false, false, 0); 
// restore auto-page-break status 
    $this->SetAutoPageBreak($auto_page_break, $bMargin); 
// set the starting point for the page content 
    $this->setPageMark(); 
    } 
} 
// create new PDF document 
$pdf = new ETCPDF('L', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); 

// set document information 
$pdf->SetCreator(PDF_CREATOR); 
$pdf->SetAuthor(''); 
$pdf->SetTitle('Certificate'); 
$pdf->SetSubject(''); 
$pdf->SetKeywords(''); 

// set header and footer fonts 
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); 

// 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(0); 

// remove default footer 
$pdf->setPrintFooter(false); 

//set auto page breaks 
$pdf->SetAutoPageBreak(TRUE, 0); 

// set image scale factor 
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); 

// set some language-dependent strings (optional) 
if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { 
    require_once(dirname(__FILE__).'/lang/eng.php'); 
    $pdf->setLanguageArray($l); 
} 
// --------------------------------------------------------- 


foreach ($_REQUEST['partSel'] as $partSel) { 
$apartSel = mysql_real_escape_string($partSel); 
if ($_POST['sem'] == 'spcl') { 
$sql = "SELECT spclactivitytitle AS EvtTitle, spclactivitydesc AS EvtDesc 
FROM tblspclactivity 
WHERE timeslotid = '" . $_POST['tsid'] . "'"; 
} 
if ($_POST['sem'] == 'sem') { 
$sql = "SELECT tblseminars.seminarpresenter AS EvtTitle, tblseminars.seminartitle AS EvtDesc 
FROM tblseminars Inner Join tblseminar_timeslot ON tblseminar_timeslot.seminarid = tblseminars.seminarid 
WHERE tblseminar_timeslot.timeslotid = '" . $_POST['tsid'] . "' AND tblseminar_timeslot.seminarid = '" . $_POST['sid'] . "'"; 
} 
if ($debug) { echo "<p>L117 $sql</p>"; } 
$result = mysql_query($sql) or die ('<p>DB Error: ' . mysql_error() . '</p>'); 
while ($rowSem = mysql_fetch_array($result)) 
{ 
$SemName = "Presented by: " . $rowSem['EvtTitle']; 
$SemDesc = $rowSem['EvtDesc']; 
} 

$sql = "SELECT firstname, lastname FROM tblparticipants WHERE participantid = '$apartSel'"; 
$result = mysql_query($sql) or die ('<p>DB Error: ' . mysql_error() . '</p>'); 

// set font 
$pdf->SetFont('times', '', 20); 

// LOOP STARTS HERE 
    while ($rowPart = mysql_fetch_array($result)) 
    { 
// add a page 
     $pdf->AddPage(); 
     $PartName = ucfirst(strtolower($rowPart['firstname'])) . " " . ucfirst(strtolower($rowPart['lastname'])); 
// PDF STARTS HERE************************** 
     $pdf->SetTextColor(255, 0, 0); 
     $pdf->SetFont('alexbrush', '', 35); 
     $pdf->SetY(67); 
     $pdf->Cell(0, 0, $PartName, 0, 0, 'C', 0, '', 3); 

     $pdf->SetFont('helveticaB', '', 15); 
     $pdf->SetY(127); 
     $pdf->Cell(0, 0, $SemDesc, 0, 1, 'C', 0, '', 3); 

     $pdf->SetY(135); 
     $pdf->Cell(0, 0, $SemName, 0, 1, 'C', 0, '', 3); 
     $pdf->endPage(); 

    } 
// LOOP ENDS HERE**************************  
//Close and output PDF document 
$pdf->Output('certificate.php', 'I'); 

//============================================================+ 
// END OF PDF FILE 
//============================================================+ 
} 
} 
0

不知道爲什麼,但多細胞固定的問題!任何人都可以解釋MultiCell和Cell之間的區別嗎?

// LOOP STARTS HERE 
while ($rowPart = mysql_fetch_array($resultPart)) 
{ 
$PartName = ucfirst(strtolower($rowPart['firstname'])) . " " . ucfirst(strtolower($rowPart['lastname'])); 
// PDF STARTS HERE************************** 
// add a page 
$pdf->AddPage(); 
$pdf->SetTextColor(255, 0, 0); 
$pdf->SetFont('alexbrush', '', 35); 
$pdf->MultiCell(0, 0, $PartName, 0, 'C', false, 0, 10, 67); 

$pdf->SetFont('helveticaB', '', 15); 
$pdf->MultiCell(0, 0, $SemDesc, 0, 'C', false, 0, 10, 127); 
$pdf->MultiCell(0, 0, $SemName, 0, 'C', false, 0, 10, 135); 
} 
// LOOP ENDS HERE************************** 

//============================================================+ 
// END OF PDF FILE 
//============================================================+ 
}