• 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

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

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

  • 相关阅读:
    JVM学习笔记(三)——类加载机制
    JVM学习笔记(二)——垃圾收集器和内存分配策略
    JVM学习笔记(一) ——Java虚拟机内存结构
    KMP算法及next数组优化
    C Primer Plus课后编程习题
    【小白出错日记】C语言篇
    C语言学习重点提纲
    编译原理学习-形式语言 乔姆斯基文法
    3.11上午课程重点
    FPGA学习-PS2接口
  • 原文地址:https://www.cnblogs.com/potatog/p/6214323.html
Copyright © 2020-2023  润新知