必要的步骤

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轴的正极。如果你想直观的看到你可以这样:

  1. $pdf->SetFont($yahei, 'B', 5, '', true);
  2. for($x = 0;$x < 200;$x=$x+5)
  3. {
  4. $pdf->Text($x, 0, $x."-");
  5.  
  6. }
  7.  
  8. for($y = 0;$y < 260;$y=$y+5)
  9. {
  10. $pdf->Text(0, $y, $y);
  11.  
  12. }

显示结果:

当!当!当!当!这样就直观了,然后需要把元素放到什么位置就那啥了撒。

2.然后难免你会想旋转一下 文字、图片什么滴。

这里很奇怪,我以为是就单纯的旋转指定的元素,结果呢,一旋转整个坐标系都旋转了。Rorate方法里面(“旋转角度”,‘X’,‘Y’)这里的XY应该是旋转之后的坐标系原点在原坐标系中的坐标,但是似乎不是很准确,感觉单位变了一样。

  1. $pdf->StartTransform();
  2. $pdf->Rotate(-30,0,60);//表示整个坐标系以原来的坐标0,60坐标(感觉又不是。。)顺时针旋转 在$pdf->StartTransform()与$pdf->StopTransform()之间就使用旋转后的坐标
  3.  
  4. for($x = 0;$x < 200;$x=$x+5)
  5. {
  6. $pdf->Text($x, 0, $x.'-');
  7.  
  8. }
  9.  
  10. for($y = 0;$y < 260;$y=$y+5)
  11. {
  12. $pdf->Text(0, $y, $y);
  13.  
  14. }
      $pdf->StopTransform();

显示结果:

然后具体举几个例子:

  1. $pdf->write1DBarcode("哎木土豆刚", 'C128', 10, 10, '', '', '',array("text"=>true,"font"=>$yahei,"fontsize"=>10), 'N');

显示结果:

旋转:

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

  1. <?php
  2.  
  3. require_once "tcpdf/tcpdf.php";
  4. $pdf = new TCPDF("P", "mm", "A4", true, 'UTF-8', false);
  5. $pdf->SetCreator("potatog");
  6. $pdf->SetAuthor('potatog');
  7. $pdf->SetTitle("potatog");
  8. $pdf->SetSubject("potatog");
  9.  
  10. $pdf->setPrintHeader(false);
  11. $pdf->setPrintFooter(false);
  12. $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
  13. $pdf->setFontSubsetting(true);
  14.  
  15. $yahei = TCPDF_FONTS::addTTFfont('fonts/Microsoft Yahei.ttf', 'TrueTypeUnicode', '', 96);
  16.  
  17. $pdf->AddPage();
  18.  
  19. $pdf->SetFont($yahei, 'B', 5, '', true);
  20. for($x = 0;$x < 200;$x=$x+5)
  21. {
  22. $pdf->Text($x, 0, $x."-");
  23.  
  24. }
  25.  
  26. for($y = 0;$y < 260;$y=$y+5)
  27. {
  28. $pdf->Text(0, $y, $y);
  29.  
  30. }
  31.  
  32. // $pdf->write1DBarcode("哎木土豆刚", 'C128', 10, 10, '', '', '',array("text"=>true,"font"=>$yahei,"fontsize"=>10), 'N');
  33.  
  34. //旋转文字(应该叫旋转坐标系更准确)
  35. $pdf->StartTransform();
  36. $pdf->Rotate(-30,0,60);//表示整个坐标系以原来的坐标0,60坐标(感觉又不是。。)顺时针旋转 在$pdf->StartTransform()与$pdf->StopTransform()之间就使用旋转后的坐标
  37.  
  38. for($x = 0;$x < 200;$x=$x+5)
  39. {
  40. $pdf->Text($x, 0, $x.'-');
  41.  
  42. }
  43.  
  44. for($y = 0;$y < 260;$y=$y+5)
  45. {
  46. $pdf->Text(0, $y, $y);
  47.  
  48. }
  49.  
  50. $pdf->write1DBarcode("旋转土豆刚", 'C128', 10, 10, '', '', '',array("text"=>true,"font"=>$yahei,"fontsize"=>10), 'N');
  51.  
  52. $pdf->StopTransform();
  53.  
  54. // $pdf->Image("log.png", $x+5, $y+50);
  55.  
  56. // $pdf->write1DBarcode(1234, 'C39', $x, $y+20, '', '', '',array("text"=>true,"label"=>"1234","font"=>$yahei,"fontsize"=>10), 'N');//这个C39用浏览器扫描不出来 C128才可以
  57. // $pdf->write1DBarcode(1234, 'C128', $x, $y+20, '', '', '',array("text"=>true,"label"=>"1234","font"=>$yahei,"fontsize"=>5,'border'=>true), 'N');
  58. // $pdf->write1DBarcode(1234, 'C128', $x+50, $y+20, '', '', '',array("text"=>true,"font"=>$yahei,'stretchtext'=>0,"fontsize"=>5), 'N');
  59.  
  60. // $pdf->write1DBarcode(12345, 'C128', '', '', '80', '30', '',array("text"=>true,"font"=>$yahei,"fontsize"=>10,'border'=>true,'stretchtext'=>0,'stretch'=>'x'), 'N');
  61.  
  62. $fn = "x.pdf";
  63. $pdfcontent = $pdf->Output($fn, "S");
  64. $fh = fopen($fn, "w");
  65. fwrite($fh, $pdfcontent);
  66. fclose($fh);
  67. echo "<a href='".$fn."'>点我</a>"
  68. ?>

修改后的index.php

第一次写发现自己还不是很会表达,干脆源码给出来,直接用。

而且我也不是很懂,再接再厉。

PHP 与pdf文档 与条码的更多相关文章

  1. Java 添加条码、二维码到PDF文档

    本文介绍如何通过Java程序在PDF文档中添加条码和二维码.创建条码时,可创建多种不同类型的条码,包括Codebar.Code11.Code128A.Code128B.Code32.Code39.Co ...

  2. 使用FastReport报表工具生成报表PDF文档

    在我们开发某个系统的时候,客户总会提出一些特定的报表需求,固定的报表格式符合他们的业务处理需要,也贴合他们的工作场景,因此我们尽可能做出符合他们实际需要的报表,这样我们的系统会得到更好的认同感.本篇随 ...

  3. C#给PDF文档添加文本和图片页眉

    页眉常用于显示文档的附加信息,我们可以在页眉中插入文本或者图形,例如,页码.日期.公司徽标.文档标题.文件名或作者名等等.那么我们如何以编程的方式添加页眉呢?今天,这篇文章向大家分享如何使用了免费组件 ...

  4. C# 复制PDF页面到另一个PDF文档

    C# 复制PDF页面到另一个PDF文档 有时候我们可能有这样一个需求,那就是把PDF页面从一个PDF文档复制到另一个PDF文档中.由于PDF文档并不像word文档那样好编辑,因此复制也相对没有那么容易 ...

  5. 利用Java动态生成 PDF 文档

    利用Java动态生成 PDF 文档,则需要开源的API.首先我们先想象需求,在企业应用中,客户会提出一些复杂的需求,比如会针对具体的业务,构建比较典型的具备文档性质的内容,一般会导出PDF进行存档.那 ...

  6. Java实现office文档与pdf文档的在线预览功能

    最近项目有个需求要java实现office文档与pdf文档的在线预览功能,刚刚接到的时候就觉得有点难,以自己的水平难以在三四天做完.压力略大.后面查找百度资料.以及在同事与网友的帮助下,四天多把它做完 ...

  7. 【Win10 开发】读取PDF文档

    关于用来读取PDF文档的内容的API,其实在Win8.1的时候就有,不过没关系,既咱们讨论的是10的UAP,连同8.1的内容也包括进去,所以老周无数次强调:把以前的内容学好了,就可以在不学习任何新知识 ...

  8. 一起学微软Power BI系列-官方文档-入门指南(7)发布与共享-终结篇+完整PDF文档

    接触Power BI的时间也只有几个月,虽然花的时间不多,但通过各种渠道了解收集,谈不上精通,但对一些重要概念和细节还是有所了解.在整理官方文档的过程中,也熟悉和了解了很多概念.所以从前到后把微软官方 ...

  9. 使用免费组件view pdf 文档

    “Is there any way to view PDF files in a Winforms tool?” 这个是我在技术论坛上发现的一个老外求助的帖子,然后看到别人回复的帖子中建议了一个免费的 ...

随机推荐

  1. js 二维码生成 插件

    <div onclick="liaotian()">点击生成二维码</div><div id="qrcode"></d ...

  2. Graphics2D字符串根据文本框缩小字体自动换行

    /** * *描述: 长字符串缩小字体自动换行 *@param g  *@param text 字符串 *@param lineWidth 单元格宽度 *@param cellHeight 单元格高度 ...

  3. mac idea中 maven项目添加的时候没有java文件

    file --other setting --maven  选中第二项即可  apply下

  4. Qt之Qwt学习之安装

    QWT+qtcreator 编译.安装使用 目录:一.Qwt简介 二.QWT编译 一.Qwt简介 QWT:Qt Widgets for Technical Applications,是开源的2D绘图库 ...

  5. java数据结构_附11_图的接口定义

    图的接口定义 Graph public class UnsupportedOperation extends RuntimeException {public UnsupportedOperation ...

  6. MySQL 配置文件中忘配置default-character-set引发的乱码问题

    今天,一开发同事使用jdbc连接数据库执行一条语句无结果集,但是通过sqlyou执行相同的语句有返回结果. 执行的语句where条件中含有中文,这应该是字符集引起的 此开发测试实例刚迁移不久的,查看迁 ...

  7. c++虚函数和内联构造函数

    创建一个含有虚函数的对象时, 编译器会实现 "初始化其VPTR以指向相应的VTABLE" 这个操作 ,而实现这个操作是通过 "插入隐藏代码至构造函数中" 故此时 ...

  8. 拓扑排序&&欧拉(回)路

    摘要:最近是不适合写代码么?忘记初始化wa到死<_=_=_>.唔--最近在学习图论,从基础搞起,先搞了拓扑排序和欧拉(回)路. Part 0. 拓扑排序 ==挖坑== Part 1. 欧拉 ...

  9. loadrunner关联和事务

    1.关联 不关联,录制没有问题,回放时可能会出错. 排除字符限制,输入因素,如果自己手动操作网页时不会报错,回放时报错,那么可以肯定,有数据需要使用关联. 如果录制没有错误,且对脚本没有进行任何修改, ...

  10. nodejs常用模块之url

    统一资源定位符(url)充当http服务器用来处理来自客户端的请求的一个地址标签.它为把一个请求发到正确的服务器的特定端口上,并访问合适的数据提供了所有需要的信息.