- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 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> </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 & 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> '.$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/>✔ 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/
我在 JavaScript 文件中运行 PHP,例如...... var = '';). 我需要使用 JavaScript 来扫描字符串中的 PHP 定界符(打开和关闭 PHP 的 )。 我已经知道使
我希望能够做这样的事情: php --determine-oldest-supported-php-version test.php 并得到这个输出: 7.2 也就是说,php 二进制检查 test.
我正在开发一个目前不使用任何框架的大型 php 站点。我的大问题是,随着时间的推移慢慢尝试将框架融入应用程序是否可取,例如在创建的新部件和更新的旧部件中? 比如所有的页面都是直接通过url服务的,有几
下面是我的源代码,我想在同一页面顶部的另一个 php 脚本中使用位于底部 php 脚本的变量 $r1。我需要一个简单的解决方案来解决这个问题。我想在代码中存在的更新查询中使用该变量。 $name)
我正在制作一个网站,根据不同的情况进行大量 PHP 重定向。就像这样...... header("Location: somesite.com/redirectedpage.php"); 为了安全起见
我有一个旧网站,我的 php 标签从 因为短标签已经显示出安全问题,并且在未来的版本中将不被支持。 关于php - 如何避免在 php 文件中写入
我有一个用 PHP 编写的配置文件,如下所示, 所以我想用PHP开发一个接口(interface),它可以编辑文件值,如$WEBPATH , $ACCOUNTPATH和 const值(value)观
我试图制作一个登录页面来学习基本的PHP,首先我希望我的独立PHP文件存储HTML文件的输入(带有表单),但是当我按下按钮时(触发POST到PHP脚本) )我一直收到令人不愉快的错误。 我已经搜索了S
我正在寻找一种让 PHP 以一种形式打印任意数组的方法,我可以将该数组作为赋值包含在我的(测试)代码中。 print_r 产生例如: Array ( [0] => qsr-part:1285 [1]
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: What is the max key size for an array in PHP? 正如标题所说,我想知道
我正在寻找一种让 PHP 以一种形式打印任意数组的方法,我可以将该数组作为赋值包含在我的(测试)代码中。 print_r 产生例如: Array ( [0] => qsr-part:1285 [1]
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
我在 MySQL 数据库中有一个表,其中存储餐厅在每个工作日和时段提供的菜单。 表结构如下: i_type i_name i_cost i_day i_start i_
我有两页。 test1.php 和 test2.php。 我想做的就是在 test1.php 上点击提交,并将 test2.php 显示在 div 中。这实际上工作正常,但我需要向 test2.php
我得到了这个代码。我想通过textarea更新mysql。我在textarea中回显我的MySQL,但我不知道如何更新它,我应该把所有东西都放进去吗,因为_GET模式没有给我任何东西,我也尝试_GET
首先,我是 php 的新手,所以我仍在努力学习。我在 Wordpress 上创建了一个表单,我想将值插入一个表(data_test 表,我已经管理了),然后从 data_test 表中获取所有列(id
我有以下函数可以清理用户或网址的输入: function SanitizeString($var) { $var=stripslashes($var); $va
我有一个 html 页面,它使用 php 文件查询数据库,然后让用户登录,否则拒绝访问。我遇到的问题是它只是重定向到 php 文件的 url,并且从不对发生的事情提供反馈。这是我第一次使用 html、
我有一个页面充满了指向 pdf 的链接,我想跟踪哪些链接被单击。我以为我可以做如下的事情,但遇到了问题: query($sql); if($result){
我正在使用 从外部文本文件加载 HTML/PHP 代码 $f = fopen($filename, "r"); while ($line = fgets($f, 4096)) { print $l
我是一名优秀的程序员,十分优秀!