PHP 记一次使用fpdf、fpdi生成报表,并加水印导出的过程

思路:

fpdf生成PDF文件,fpdi加水印

fpdf类库下载

composer命令安装fpdf:composer require setasign/fpdf

composer命令安装fpdi:composer require setasign/fpdi

fpdf中文插件下载地址:http://www.fpdf.org/download/chinese.zip

中文插件下载解压后放setasign/fpdf 下

使用示例(绘制表格):

require_once('../vendor/setasign/fpdf/chinese.php');//引入中文包
$pdf=new PDF_Chinese('P','mm','A4');//A4设置纸张,最大能设置成A3
$pdf -> AddGBFont();
$pdf -> AddPage('L');//我这里使用的横向纸张,直向可以设置为L
$pdf -> SetFont('GB','',14);//设置字体和大小
//给每列设置宽度,可以根据需要设置宽度,一行放不下会自动换行
$pdf->SetWidths([30,30,30,30,30,30]);
//设置表头
$pdf->MBRow(array(
    iconv("UTF-8","gbk","序号"),
    iconv("UTF-8","gbk","列1"),
    iconv("UTF-8","gbk","列2"),
    iconv("UTF-8","gbk","列3"),
    iconv("UTF-8","gbk","列4"),
    iconv("UTF-8","gbk","列5"),
));
$data = [
    [
        iconv("UTF-8","gbk",'文字1'),
        iconv("UTF-8","gbk",'文字2带英文AAAAAAA'),
        iconv("UTF-8","gbk",'文字3带符号;,-、'),
        iconv("UTF-8","gbk",'文字4带数字12345678909876'),
        iconv("UTF-8","gbk",'文字5'),
        iconv("UTF-8","gbk",'文字6带英文符号/\[]----')
    ],
    [
        iconv("UTF-8","gbk",'文字1'),
        iconv("UTF-8","gbk",'文字2带英文AAAAAAA'),
        iconv("UTF-8","gbk",'文字3带符号;,-、'),
        iconv("UTF-8","gbk",'文字4带数字12345678909876'),
        iconv("UTF-8","gbk",'文字5'),
        iconv("UTF-8","gbk",'文字6带英文符号/\[]----')
    ],
];
//逐行写入
foreach($data as $row){
    $pdf->MBRow($row);  
}
//可以直接输出
$pdf->Output();
//可以保存文件到指定目录下
//$pdf->Output($fileName,'F');

结果如下:

 这个过程中会遇到三个问题:

1、写入中文时,如果遇到换行,行数会计算错误,导致一部分字体在表格外;

2、中文和数字一起写入的时候,数字会圆角显示,导致数字之间间距很大;

3、中文、英文、符号一起作为字符串写入时,某种情况下会进入一个死循环挂掉;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值