zoukankan      html  css  js  c++  java
  • 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

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

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

  • 相关阅读:
    一些你可能用到的代码
    iOS 键盘下去的方法
    iOS设计模式汇总
    随笔
    Spring cloud config 分布式配置中心 (三) 总结
    Spring cloud config 分布式配置中心(二) 客户端
    Spring cloud config 分布式配置中心(一) 服务端
    jdbcUrl is required with driverClassName spring boot 2.0版本
    JpaRepository接口找不到 spring boot 项目
    解决IntelliJ “Initialization failed for 'https://start.spring.io'
  • 原文地址:https://www.cnblogs.com/potatog/p/6214323.html
Copyright © 2011-2022 走看看