fpdf fpdi 操作pdf文件 写入中文汉字

    今天给公司做一个线上合同签约功能,用户签约后 生成pdf版的文件 。网上搜了搜大概都是用fpdf进行操作的  ,

通过fpdi 可以进行读取pdf模板。 在通过继承fpdf 操作现有的pdf文档 。

      功能很简单,用户手写用页面canvas生成图片,图片保存png到服务器 。然后粘贴图片到对应的pdf模板上。

但是在实际操作上就出现了问题。国外的fpdf 对中文支持并不是很好,在pdf上加入中文汉字的时候,会出现乱码。

而且他只提供文件夹中的几种字体。而且这几种字体都是英文字体,所以无法正常支持汉字的写入。

       下面说一下具体的解决方案:

   1.   https://github.com/DCgithub21/cd_FPDF  下载代码 

 2. 将上一步的源码放入vendor中  

    3. 修改composer源码  修改 fpdi中的  fpdfTpl.php  将他基础的fpdf类改成 咱们刚才引入的代码  而之前引入的代码再继承fpdf

  

  4.编写相关代码 

 /**
     * 合成pdf
     * @param $sgin_img
     * @param $order_sn
     * @return string
     * @throws \setasign\Fpdi\PdfParser\CrossReference\CrossReferenceException
     * @throws \setasign\Fpdi\PdfParser\Filter\FilterException
     * @throws \setasign\Fpdi\PdfParser\PdfParserException
     * @throws \setasign\Fpdi\PdfParser\Type\PdfTypeException
     * @throws \setasign\Fpdi\PdfReader\PdfReaderException
     */
    public function pdf($sgin_img,$order_sn,$orderInfo){
    
        $sgin_img=ROOT_PATH.'public/'.$sgin_img;
        $name=$order_sn;
        $outputPath=ROOT_PATH.'public/uploads/pdf/'.$name.'.pdf';
        $url='/uploads/pdf/'.$name.'.pdf';
        $pdf=new Fpdi();
        $pdf->AddPage();
        $pdf->setSourceFile('UI.pdf'); //设置模板文件
        $template = $pdf->importPage(1);
        $pdf->useTemplate($template); 
        $count=mb_strlen($orderInfo['order_name']);
        $x=81+2.5*(9-$count); //计算宽度
        /*写入项目名称*/
        $pdf->SetTextColor(0, 0, 0);
        $pdf->SetXY($x, 67);
      //  $pdf->SetFont($font_path);
        $pdf->AddGBFont('songti');  //使用字体
        $pdf->SetFont('songti','',13); 
     //注意此处一定要用iconv改一下编码 我之前没有想到这个 浪费很多时间
        $pdf->Write(0,iconv("utf-8","gbk",$orderInfo['order_name']));
        /*添加签名图片*/
        $pdf->Image($sgin_img,50,130,50,0);
        $pdf->Output($outputPath,'F');
        return $url;
    }

展示一下生成的效果:

 

 有可能你还会遇见其他的问题 :还是字体问题  上面贴的github中有一个黑体字体 ,但是你可能需要其他的字体

比如说我用的是宋体 。而fpdf中是有自己的字体库的  只能应用库中的 字体,这里可能还需要我们自己生产字体库,

网上也有相关的方法  这里我发一下比较简单便捷的。

  通过访问 http://www.fpdf.org/makefont/  这里地址 就可以生产所需要的字体库  图片如下:

将两个文件放入到对应的font文件夹中, 引入的时候 在Addfont 就可以正常使用了。

如果你还遇到了其他的问题,可以在留言中给我反馈。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值