PHP 与pdf文档 与条码
必要的步骤
1.导入require_once "tcpdf/tcpdf.php"; 工具源码在demo中
2.$pdf = new TCPDF("P", "mm", "A4", true, 'UTF-8', false);//实例化一个pdf对象 mm表示坐标的单位,'A4'表示纸张大小
3.定义一个字体 $yahei = TCPDF_FONTS::addTTFfont('fonts/Microsoft Yahei.ttf', 'TrueTypeUnicode', '', 96);//定义一个字体 字体文件存在项目fonts中
4.操作$pdf对象
(1)新增一页 $pdf->AddPage();
(2)添加内容
文本:$pdf->Text($x, $y, "土豆刚");//(x坐标,y坐标,显示内容)
图片:$pdf->Image("log.png", $x, $y);//图片路径,x坐标,y坐标
条形码:$pdf->write1DBarcode(1234, 'C128', $x, $y, '', '', '','', 'N');//文本,‘c128’,x坐标,y坐标,宽度,高度,‘’,样式数组,‘’
5.定义一个pdf文档路径,将$pdf对象的内容与属性填写上去。
$fn = "x.pdf";//定义文档
$pdfcontent = $pdf->Output($fn, "S");//将内容与属性放进输出流
$fh = fopen($fn, "w");//打开输出流
fwrite($fh, $pdfcontent);//填写内容
fclose($fh);//关闭输出流
此时一个pdf创建完成。
demo源码 http://pan.baidu.com/s/1pL31nqb
技巧总结:
1.首先说一下,pdf文档默认的坐标系原点是 左上角,向下是Y轴的正级,向右是x轴的正极。如果你想直观的看到你可以这样:
$pdf->SetFont($yahei, 'B', 5, '', true);
for($x = 0;$x < 200;$x=$x+5)
{
$pdf->Text($x, 0, $x."-"); } for($y = 0;$y < 260;$y=$y+5)
{
$pdf->Text(0, $y, $y); }
显示结果:

当!当!当!当!这样就直观了,然后需要把元素放到什么位置就那啥了撒。
2.然后难免你会想旋转一下 文字、图片什么滴。
这里很奇怪,我以为是就单纯的旋转指定的元素,结果呢,一旋转整个坐标系都旋转了。Rorate方法里面(“旋转角度”,‘X’,‘Y’)这里的XY应该是旋转之后的坐标系原点在原坐标系中的坐标,但是似乎不是很准确,感觉单位变了一样。
$pdf->StartTransform();
$pdf->Rotate(-30,0,60);//表示整个坐标系以原来的坐标0,60坐标(感觉又不是。。)顺时针旋转 在$pdf->StartTransform()与$pdf->StopTransform()之间就使用旋转后的坐标 for($x = 0;$x < 200;$x=$x+5)
{
$pdf->Text($x, 0, $x.'-'); } for($y = 0;$y < 260;$y=$y+5)
{
$pdf->Text(0, $y, $y); }
$pdf->StopTransform();
显示结果:

然后具体举几个例子:
$pdf->write1DBarcode("哎木土豆刚", 'C128', 10, 10, '', '', '',array("text"=>true,"font"=>$yahei,"fontsize"=>10), 'N');
显示结果:

旋转:
//旋转文字(应该叫旋转坐标系更准确)
$pdf->StartTransform();
$pdf->Rotate(-30,0,60);//表示整个坐标系以原来的坐标0,60坐标(感觉又不是。。)顺时针旋转 在$pdf->StartTransform()与$pdf->StopTransform()之间就使用旋转后的坐标 for($x = 0;$x < 200;$x=$x+5)
{
$pdf->Text($x, 0, $x.'-'); } for($y = 0;$y < 260;$y=$y+5)
{
$pdf->Text(0, $y, $y); } $pdf->write1DBarcode("旋转土豆刚", 'C128', 10, 10, '', '', '',array("text"=>true,"font"=>$yahei,"fontsize"=>10), 'N'); $pdf->StopTransform();

<?php
require_once "tcpdf/tcpdf.php";
$pdf = new TCPDF("P", "mm", "A4", true, 'UTF-8', false);
$pdf->SetCreator("potatog");
$pdf->SetAuthor('potatog');
$pdf->SetTitle("potatog");
$pdf->SetSubject("potatog");
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
$pdf->setFontSubsetting(true);
$yahei = TCPDF_FONTS::addTTFfont('fonts/Microsoft Yahei.ttf', 'TrueTypeUnicode', '', 96);
$pdf->AddPage();
$pdf->SetFont($yahei, 'B', 5, '', true);
for($x = 0;$x < 200;$x=$x+5)
{
$pdf->Text($x, 0, $x."-");
}
for($y = 0;$y < 260;$y=$y+5)
{
$pdf->Text(0, $y, $y);
}
// $pdf->write1DBarcode("哎木土豆刚", 'C128', 10, 10, '', '', '',array("text"=>true,"font"=>$yahei,"fontsize"=>10), 'N');
//旋转文字(应该叫旋转坐标系更准确)
$pdf->StartTransform();
$pdf->Rotate(-30,0,60);//表示整个坐标系以原来的坐标0,60坐标(感觉又不是。。)顺时针旋转 在$pdf->StartTransform()与$pdf->StopTransform()之间就使用旋转后的坐标
for($x = 0;$x < 200;$x=$x+5)
{
$pdf->Text($x, 0, $x.'-');
}
for($y = 0;$y < 260;$y=$y+5)
{
$pdf->Text(0, $y, $y);
}
$pdf->write1DBarcode("旋转土豆刚", 'C128', 10, 10, '', '', '',array("text"=>true,"font"=>$yahei,"fontsize"=>10), 'N');
$pdf->StopTransform();
// $pdf->Image("log.png", $x+5, $y+50);
// $pdf->write1DBarcode(1234, 'C39', $x, $y+20, '', '', '',array("text"=>true,"label"=>"1234","font"=>$yahei,"fontsize"=>10), 'N');//这个C39用浏览器扫描不出来 C128才可以
// $pdf->write1DBarcode(1234, 'C128', $x, $y+20, '', '', '',array("text"=>true,"label"=>"1234","font"=>$yahei,"fontsize"=>5,'border'=>true), 'N');
// $pdf->write1DBarcode(1234, 'C128', $x+50, $y+20, '', '', '',array("text"=>true,"font"=>$yahei,'stretchtext'=>0,"fontsize"=>5), 'N');
// $pdf->write1DBarcode(12345, 'C128', '', '', '80', '30', '',array("text"=>true,"font"=>$yahei,"fontsize"=>10,'border'=>true,'stretchtext'=>0,'stretch'=>'x'), 'N');
$fn = "x.pdf";
$pdfcontent = $pdf->Output($fn, "S");
$fh = fopen($fn, "w");
fwrite($fh, $pdfcontent);
fclose($fh);
echo "<a href='".$fn."'>点我</a>"
?>
修改后的index.php
第一次写发现自己还不是很会表达,干脆源码给出来,直接用。
而且我也不是很懂,再接再厉。
PHP 与pdf文档 与条码的更多相关文章
- Java 添加条码、二维码到PDF文档
本文介绍如何通过Java程序在PDF文档中添加条码和二维码.创建条码时,可创建多种不同类型的条码,包括Codebar.Code11.Code128A.Code128B.Code32.Code39.Co ...
- 使用FastReport报表工具生成报表PDF文档
在我们开发某个系统的时候,客户总会提出一些特定的报表需求,固定的报表格式符合他们的业务处理需要,也贴合他们的工作场景,因此我们尽可能做出符合他们实际需要的报表,这样我们的系统会得到更好的认同感.本篇随 ...
- C#给PDF文档添加文本和图片页眉
页眉常用于显示文档的附加信息,我们可以在页眉中插入文本或者图形,例如,页码.日期.公司徽标.文档标题.文件名或作者名等等.那么我们如何以编程的方式添加页眉呢?今天,这篇文章向大家分享如何使用了免费组件 ...
- C# 复制PDF页面到另一个PDF文档
C# 复制PDF页面到另一个PDF文档 有时候我们可能有这样一个需求,那就是把PDF页面从一个PDF文档复制到另一个PDF文档中.由于PDF文档并不像word文档那样好编辑,因此复制也相对没有那么容易 ...
- 利用Java动态生成 PDF 文档
利用Java动态生成 PDF 文档,则需要开源的API.首先我们先想象需求,在企业应用中,客户会提出一些复杂的需求,比如会针对具体的业务,构建比较典型的具备文档性质的内容,一般会导出PDF进行存档.那 ...
- Java实现office文档与pdf文档的在线预览功能
最近项目有个需求要java实现office文档与pdf文档的在线预览功能,刚刚接到的时候就觉得有点难,以自己的水平难以在三四天做完.压力略大.后面查找百度资料.以及在同事与网友的帮助下,四天多把它做完 ...
- 【Win10 开发】读取PDF文档
关于用来读取PDF文档的内容的API,其实在Win8.1的时候就有,不过没关系,既咱们讨论的是10的UAP,连同8.1的内容也包括进去,所以老周无数次强调:把以前的内容学好了,就可以在不学习任何新知识 ...
- 一起学微软Power BI系列-官方文档-入门指南(7)发布与共享-终结篇+完整PDF文档
接触Power BI的时间也只有几个月,虽然花的时间不多,但通过各种渠道了解收集,谈不上精通,但对一些重要概念和细节还是有所了解.在整理官方文档的过程中,也熟悉和了解了很多概念.所以从前到后把微软官方 ...
- 使用免费组件view pdf 文档
“Is there any way to view PDF files in a Winforms tool?” 这个是我在技术论坛上发现的一个老外求助的帖子,然后看到别人回复的帖子中建议了一个免费的 ...
随机推荐
- C++虚函数的陷阱
首先看一段代码: class B { public: ) { std::cout << "base fun called, " << i; }; }; cl ...
- hihoCoder#1135
刚开始学习C语言,准备在做hiho的题目的过程中来学习,在此进行记录,如果代码中有错误或者不当的地方还请指正. 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 The c ...
- Cordova+ionic 开发hybird App --- 开发环境搭建
Cordova 开发hybird App 开发环境搭建 一.一些基础概念: Ant : 简单说来可以这么理解,如果你用记事本写JAVA程序,然后在cmd里输入javac命令编译它,但是有一天你发现每次 ...
- strace命令使用
在调试的时候,strace能帮助你追踪到一个程序所执行的系统调用.当你想知道程序和操作系统如何交互的时候,这是极其方便的,比如你想知道执行了哪些系统调用,并且以何种顺序执行. 这个简单而又强大的工具几 ...
- HyperV采用硬盘拷贝的方式迁移虚拟机后的问题处理
公司有一台RSA认证服务器,是在windows 2008 R2下的虚拟机,最近总是出现服务中断的情况,考虑到宿主机性能较差,于是想迁移到新的服务器中. 本想通过SCVMM来迁移,但因功能不可用,所以采 ...
- php项目中使用memcache
memcache为分布式内存缓存系统,通过在内存中存取数据和对象减少对数据库的访问从而减轻数据库的负载,memcache分为客户端和服务端,服务端为C实现,有现成的服务端应用程序,无需开发,只需要配置 ...
- class can not be find with platformType:1 step 1
使用第三方库的时候 (配合cocopods)混合使用一定要注意 为什么会出现这样的问题... 苦苦难为我半天时间 都有想打人的冲动 前天一切正常今天出来个这 原因很简单当使用cocopods的时候默认 ...
- Schedule 学习
现在做的项目都有用到Schedule,现在用一点时间来总结. 一.首先要到Nuget中下载Quartz.net. 二.下载下来了,你需要对它进行配置,使它能给你正常的使用. 三.在Global.asa ...
- C语言文法分析
程序 → <外部声明>|<程序><外部声明> <外部声明> → <函数定义> | <声明> <函数定义> → < ...
- Quartz Core框架之CALayer
1.继承链:NSObject 2.创建一个layer (1)+ (instancetype)layer :创建和返回一个layer实例对象 (2)- (instancetype)init :返回一个初 ...