必要的步骤
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>" ?>
第一次写发现自己还不是很会表达,干脆源码给出来,直接用。
而且我也不是很懂,再接再厉。