TCPDF打印从入门到精通
1. TCPDF的模块导入
TCPDF的官网为https://tcpdf.org
官方文档有几十个例子;详情参看官方文档!
2. 使用 TCPDF打印
例如:横版表格打印并自动分页
/**
* 打印
*/
public function actionPrint($id)
{
//设置无布局
$this->layout = false;
//获取打印数据
$model = $this->findModel($id);
if(!($model->is_del == 0)){
throw new ForbiddenHttpException("该单据无法打印");
}
$wmsCheckDetail = new \backend\models\WmsCheckDetailSearch();
$dataProvider = $wmsCheckDetail->searchByCheckId($id);
//生成页面内容
$content = $this->render('print', [
'model' => $model,
'dataProvider'=>$dataProvider,
]);
//打印对象
// $pdf = new \TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT,true, 'UTF-8', false);
$pdf = (new \TCPDF('L', 'mm', array(240, 140), true, 'UTF-8', false));
//设置无打印头
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
//设置PDF打印纸张的编剧
$pdf->SetMargins(20, 20,20);
//设置单元格内边距
$pdf->setCellPaddings(0, 0, 0, 0);
//设置自动进入下一页
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_RIGHT);
$pdf->AddPage();
//设置字体
$pdf->SetFont('stsongstdlight', '', 10);
$pdf->writeHTML($content, true, false, true, false, '');
$pdf->lastPage();
$pdf->get('库存盘点.pdf');
}
<style type="text/css">
@page {
size: A4;
margin: 0px;
}
.out {
width: 100%;
/*border: 1px solid #ddd;*/
/*margin: 0 auto;*/
}
.out .title {
text-align: center;
}
table.table {
margin: 10px;
width: 100%;
}
table.table-bordered {
/*table-layout: fixed;*/
margin: 100px;
/*border-collapse: collapse;*/
border: none;
width: 100%;
}
table.table-bordered td {
border: solid 1px #000 ;
height: 26px;
line-height: 26px;
text-indent: 0.5em;
}
.footer {
width: 100%;
margin: 10px;
}
</style>
<div class="out">
<h2 class="title"><?= $model->common_producer_info_name ?> | 库存盘点清单</h2>
<table class="table-bordered" style="font-size: 10px">
<tr>
<td colspan="24" class="active">基本信息</td>
</tr>
<tr>
<td colspan="2" class="active" align="center">编号</td>
<td colspan="6" align="center">
<?= $model->wms_check_code; ?>
</td>
<td colspan="4" class="active" align="center">存货类型</td>
<td colspan="4" align="center">
<?= $model->common_producer_herb_type == 1 ? '原料' : '成品'; ?>
</td>
<td colspan="4" class="active" align="center">截止日期</td>
<td colspan="4" align="center">
<?= date('Y-m-d', strtotime('-1 day', $model->wms_check_end_at)) ?>
</td>
</tr>
<tr>
<td colspan="24" class="active">库存清单</td>
</tr>
<tr>
<td colspan="2" class="active" align="center">名称</td>
<td colspan="2" class="active" align="center">等级</td>
<td colspan="4" class="active" align="center">单号</td>
<td colspan="2" class="active" align="center">件数(袋)</td>
<td colspan="2" class="active" align="center">实盘</td>
<td colspan="2" class="active" align="center">差异</td>
<td colspan="2" class="active" align="center">规格</td>
<td colspan="2" class="active" align="center">重量(公斤)</td>
<td colspan="2" class="active" align="center">实盘</td>
<td colspan="2" class="active" align="center">差异</td>
<td colspan="2" class="active" align="center">说明</td>
</tr>
<?php foreach ($dataProvider->getModels() as $detail){ ?>
<tr>
<td colspan="2" align="center"><?= $detail->common_producer_herb_info_name ?></td>
<td colspan="2" align="center"><?= substr($detail->common_producer_herb_grade_info_name, 0, 12) ?></td>
<td colspan="4" align="center"><?= $detail->wms_herb_in_sheet_number ?></td>
<td colspan="2" align="center"><?= $detail->wms_check_detail_system_package_num ?></td>
<td colspan="2" align="center"></td>
<td colspan="2" align="center"></td>
<td colspan="2" align="center"></td>
<td colspan="2" align="center"><?= \common\models\Base::weightBcdiv($detail->wms_check_detail_system_weight) ?></td>
<td colspan="2" align="center"></td>
<td colspan="2" align="center"></td>
<td colspan="2" align="center"></td>
</tr>
<?php } ?>
<tr>
<td colspan="24" class="active">库管签字</td>
</tr>
<tr>
<td colspan="4" class="active" align="center">盘点人</td>
<td colspan="8">
</td>
<td colspan="4" class="active" align="center">盘点日期</td>
<td colspan="8">
</td>
</tr>
<tr>
<td colspan="4" align="center">盘点备注</td>
<td colspan="20" class="note">
</td>
</tr>
<tr>
<td colspan="24" class="active">财务签字</td>
</tr>
<tr>
<td colspan="4" class="active" align="center">复核人</td>
<td colspan="8">
</td>
<td colspan="4" class="active" align="center">复核日期</td>
<td colspan="8">
</td>
</tr>
<tr>
<td colspan="4" align="center">复核备注</td>
<td colspan="20" class="note">
</td>
</tr>
</table>
<div class="footer">
</div>
</div>
$content 返回的是html页面打印的具体内容
纸张竖着打印用
$pdf = new \TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT,true, 'UTF-8', false);
纸张横着打印使用
$pdf = (new \TCPDF('L', 'mm', array(240, 140), true, 'UTF-8', false));
即宽度为240,高度为140的A4纸
注意:
重要的是纸张的自动分页,如遇到表格也会形成两个表格
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_RIGHT);
TCPDF打印从入门到精通的更多相关文章
- Nginx开发从入门到精通 学习目录分享学习 (阿里著作)
Nginx开发从入门到精通 缘起 nginx由于出色的性能,在世界范围内受到了越来越多人的关注,在淘宝内部它更是被广泛的使用,众多的开发以及运维同学都迫切的想要了解nginx模块的开发以及它的内部 ...
- 2015年新版C#从入门到精通(第2版)视频教学录像【无水印版】
<c#从入门到精通(第2版)>以零基础讲解为宗旨,用实例引导读者学习,深入浅出地介绍了c#的相关知识和实战技能.<c#从入门到精通(第2版)>第1篇[c#语言基础]主要讲解c# ...
- 办公软件Office PPT 2010视频教程从入门到精通系列教程(22课时)
办公软件Office PPT 2010视频教程从入门到精通系列教程(22课时) 乔布斯的成功离不开美轮美奂的幻灯片效果,一个成功的商务人士.部门经理也少不了各种各样的PPT幻灯片.绿色资源网给你提供了 ...
- Hibernate从入门到精通(三)Hibernate配置文件
在上次的博文Hibernate从入门到精通(二)Hibernate实例演示我们已经通过一个实例的演示对Hibernate的基本使用有了一个简单的认识,这里我们在此简单回顾一下Hibernate框架的使 ...
- (升级版)Spark从入门到精通(Scala编程、案例实战、高级特性、Spark内核源码剖析、Hadoop高端)
本课程主要讲解目前大数据领域最热门.最火爆.最有前景的技术——Spark.在本课程中,会从浅入深,基于大量案例实战,深度剖析和讲解Spark,并且会包含完全从企业真实复杂业务需求中抽取出的案例实战.课 ...
- 《Java从入门到精通》src0-8
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello wo ...
- 【PHP】PHP从入门到精通(一)——想学习PHP的小伙伴的福利来了!
PHP从精通到入门 (一)PHP简介和基本知识 PHP(外文名:PHP: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言.语法吸 ...
- 【PHP】最详细PHP从入门到精通(三)——PHP中的数组
PHP从入门到精通 之PHP中的数组 各位开发者朋友大家好,链接上次更新,我们PHP的学习也更深了一层,本次博主给大家带来PHP数组的数组实例详解的相关资料.数组分为数组数值数值,关联数组,多维数组 ...
- 【PHP】最详细PHP从入门到精通(四)——PHP中的字符串
PHP从入门到精通 之PHP中的字符串 大家好,继续跟进PHP最详尽的知识更新,本周,跟大家重点讲一下PHP中字符串的使用.在PHP中,字符串是非常重要的一个概念,基本上大家想到的字符串的处理功能, ...
随机推荐
- 原生js函数的伪重载
一.我们在学习java的时候,其中方法有一个比较的重要的特性重载,根据传入的参数的个数来执行不同的方法,而方法其根据签名来判断,而JavaScript却不能根据方法的签名来进行重载,只能通过参数的个数 ...
- Tensorflow-hub[例子解析1]
0. 引言 Tensorflow于1.7之后推出了tensorflow hub,其是一个适合于迁移学习的部分,主要通过将tensorflow的训练好的模型进行模块划分,并可以再次加以利用.不过介于推出 ...
- POJ3292&&2115
这两道题还是比较简单的,没有什么难度 不过归在数论这个专题里我还是比较认同的,多少有些关系 3292 题目大意:给你一个范围n,让你求出这个范围内所有形式类似\(4k+1(k为正整数)\)的数中的H- ...
- 使用sklearn进行K_Means聚类算法
首先附上官网说明 [http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html#examples-usin ...
- 【Qt】窗口居中显示
w.move((a.desktop()->width() - w.width())/, (a.desktop()->height() - w.height())/); 上述方法可以置中,但 ...
- 在线排错之curl命令详解
春回大地万物复苏,好久不来,向各位博友问好. 简介 cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行.它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下 ...
- TRIO-basic指令--九九乘法表demo
在路上闲的没事,想到之前自己用别的语言实现乘法口诀表,于是来了兴趣用TRIO-basic试一下,挺简单的一段代码,大家看看就好. ' TRIO-basic '实现乘法口诀表 定义两个整型的局部变量 D ...
- confluence上传文件附件预览乱码问题(linux服务器安装字体操作)
在confluence上传excel文件,预览时发现乱码问题主要是因为再上传文件的时候一般是Windows下的文件上传,而预览的时候,是linux下的环境,由于linux下没有微软字体,所以预览的时候 ...
- Vue 回顾之指令(关于input自动聚焦的问题)
用了Vue也一年多了,虽然对大部分内容都比较熟悉,但有些用法可能会起到意想不到的作用. 今天在做一个关于抽奖的需求,要求是每次点击编辑按钮显示编辑框,要求自动聚焦. 一开始想到了autofocus属性 ...
- python基础学习笔记(一)
安装与运行交互式解释器 在绝大多数linux和 UNIX系统安装中(包括Mac OS X),Python的解释器就已经存在了.我们可以在提示符下输入python命令进行验证(作者环境ubuntu) f ...