gpt4 book ai didi

php - tcpdf 表生成的行显示不常量

转载 作者:行者123 更新时间:2023-11-29 03:22:52 29 4
gpt4 key购买 nike

我正在尝试在 codeigniter 框架中使用 tcpdf 生成一个表。我尝试生成的结构如下所示。

________________________________________________________
header 1
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
description 1 | | | | | | | |
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
header 2
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
subheader 2.1
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
description 2.1.1
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
description 2.1.2
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
subheader 2.2
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
description 2.2.1
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
header 3
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
description 3.1
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
description 3.2

虽然我能够得到上面的表格,但是生成的表格不是常量。有时它会给我除描述 3.1 和描述 3.2 之外的所有行和单元格。我尝试了 mysql 查询,它每次都会生成预期的结果。我的代码是:

function createPDF($chklistID){

$this->load->library("Pdf");
$title="Daily Checklist Template";
$subject="Daily Checklist";
$author = "Derek Lim";
// 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($author);
$pdf->SetTitle($title);
$pdf->SetSubject($subject);
//$pdf->SetKeywords('');

// set default header data
$pdf->setHeaderFont(array('', '', 20));
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING, array(0,64,255), array(0,64,128));
$pdf->setFooterData(array(0,64,0), array(0,64,128));

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

// set default monospaced font
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

// set margins
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$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 strings (optional)
if (@file_exists(dirname(__FILE__).'/lang/eng.php')) {
require_once(dirname(__FILE__).'/lang/eng.php');
$pdf->setLanguageArray($l);
}

// ---------------------------------------------------------

// set default font subsetting mode
$pdf->setFontSubsetting(true);

// Set font
// dejavusans is a UTF-8 Unicode font, if you only need to
// print standard ASCII chars, you can use core fonts like
// helvetica or times to reduce file size.
$pdf->SetFont('dejavusans', '', 11, '', true);

// Add a page
// This method has several options, check the source code documentation for more information.
$pdf->AddPage();

// set text shadow effect
$pdf->setTextShadow(array('enabled'=>true, 'depth_w'=>0.2, 'depth_h'=>0.2, 'color'=>array(196,196,196), 'opacity'=>1, 'blend_mode'=>'Normal'));
// Set some content to print
$html = '<div width="100%"><br/><br/><table><tr><td width="20%"><b>Project:</b></td><td width="80%">_______________________________________________</td></tr></div>';

//get worklist type name
$worklistName = $this->checklists_model->get_worklist($chklistID);

//gen html
$html = $this->gen_html($chklistID);

// Print text using writeHTMLCell()
$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);

// ---------------------------------------------------------

// Close and output PDF document
// This method has several options, check the source code documentation for more information.
$chklistPath = $_SERVER['DOCUMENT_ROOT']."safety/checklists/";
$pdf->Output($chklistPath.urlencode($worklistName->checklistName).'.pdf', 'F'); //save to file
$pdf->Output(urlencode($worklistName->checklistName).'.pdf', 'I'); //preview in screen
}

function gen_html($chklistID){
//get worklist type name
$worklistName = $this->checklists_model->get_worklist($chklistID);
$html .= '<div width="100%" style="text-align:center;"><b>'.$worklistName->checklistName.' Checklist</b></div>';
$html .= '<div width="100%" ><table><tr><td width="30%"><b>Contractor:</b></td><td width="70%">_______________________________________________</td></tr><tr><td></td></tr><tr><td width="30%"><b>Location/Area:</b></td><td width="70%">_______________________________________________</td></tr><tr><td></td></tr><tr><td width="30%"><b>Date of Inpection:</b></td><td width="70%">_________________________ To ______________________</td></tr><tr><td>&nbsp;</td></tr><td width="30%"><b>Location/Area:</b></td><td width="70%">_______________________________________________</td></tr><tr><td></td></tr><tr><td width="30%"><b>Inspected/Checked by:</b></td><td width="70%" style="text-align:center;">_______________________________________________<br/>(Name &amp; Signature)</td></tr></table></div>';

$html .= '<div><table border="1"><tr><th width="7%" style="text-align:center;">S/No</th><th width="40%" style="text-align:center;">Description</th><th width="50%" style="text-align:center;">Day<br/><table border="1"><tr><th>Mon</th><th>Tue</th><th>Wed</th><th>Thu</th><th>Fri</th><th>Sat</th><th>Sun</th></tr></table></th></tr>';
$headers = $this->checklists_model->get_headers($chklistID);
$sn = 1;
foreach ($headers as $header) {
if($header->chklistDailyConditionsCatParent==0){
$conditions = $this->checklists_model->get_conditions($header->chklistDailyConditionsCatID);
$html .= '<tr><td></td><td><u>'.$header->chklistDailyConditionsCatName.'</u></td><td></td></tr>';
foreach ($conditions as $condition) {
$html .= '<tr><td>'.$sn.'</td><td>'.$condition->chklistConditionsName.'</td><td><table border="1" style="width:100%;"><tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr></table></td></tr>';
$sn++;
}
$sn1 = $sn;
}elseif($header->chklistDailyConditionsCatParent!=0){
$subConditions = $this->checklists_model->get_subConditions($header->chklistDailyConditionsCatID);
$html .= '<tr><td></td><td> -<u>'.$header->chklistDailyConditionsCatName.'</u></td><td></td></tr>';
foreach ($subConditions as $condition) {
$html .= '<tr><td>'.$sn1.'</td><td>&nbsp; '.$condition->chklistConditionsName.'</td><td><table border="1" style="width:100%;"><tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr></table></td></tr>';
$sn1++;
}
$sn = $sn1;
}
}
$html .= '<tr><td></td><td>Signature:</td><td><table border="1" style="width:100%;"><tr><td style="height:100px;"></td><td></td><td></td><td></td><td></td><td></td><td></td></tr></table></td></tr>';
$html .= '</table></div>';

$html .= '<div><span><h4>Legend:</h4><br/><br/>X No/Not Satisfactory<br/><br/>&#10004; Yes/Good<br/><br/>C Not Applicable</span></div>';
$html .= '<div><h4>Remarks:</h4></div>';
return $html;
}

我做错了什么吗?

最佳答案

尝试使用这段代码为我工作。您必须在 helpers 文件夹 pdf_helper.php 中创建一个文件并编写此代码,并将 tcpdf 库文件夹放在该文件夹中

    <?php

function tcpdf()
{
//require_once('tcpdf/config/lang/eng.php');
require_once('tcpdf/tcpdf.php');
}


?>

在你的 View 页面写这段代码

 <?php get_instance()->load->helper('pdf_helper');  
tcpdf();
$obj_pdf = new TCPDF('P', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$obj_pdf->SetCreator(PDF_CREATOR);
$title = "PDF Report";
$obj_pdf->SetTitle($title);
$obj_pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, $title, PDF_HEADER_STRING);
$obj_pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$obj_pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
$obj_pdf->SetDefaultMonospacedFont('helvetica');
$obj_pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$obj_pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
$obj_pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$obj_pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
$obj_pdf->SetFont('helvetica', '', 9);
$obj_pdf->setFontSubsetting(false);

$obj_pdf->SetPrintHeader(false);
$obj_pdf->SetPrintFooter(false);
$obj_pdf->AddPage();
ob_start();
?>

<html>write your html here .....</html>

<?php
$content = ob_get_contents();
ob_end_clean();
$obj_pdf->writeHTML($content, true, false, true, false, '');
//$obj_pdf->Output('output.pdf', 'I');
$obj_pdf->Output($this->config->item('server_absolute_path').'/application/controllers/invoice_pdf/Invoice_'.$booking_details[0]['id'].'.pdf', 'F'); ?>

名称为 invoice.pdf 的文件将保存在 controllers 文件夹中

关于php - tcpdf 表生成的行显示不常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41056468/

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