当前位置: 首页 > 工具软件 > FPDF > 使用案例 >

PHP使用fpdf+fpdi解决中文乱码

徐涵亮
2023-12-01

本篇是针对要在现有pdf文件上写字,加图片这种需求而描述的方法。用到PHP代码,无需配置服务器PHP扩展库环境,因此是简单和方便的。

需要用到三个库(下面三个文件大家可以去GitHub下载也可以网上搜索 另外我也上传了资源)

  1. FPDF, 用来建立pdf文档
  2. chines.php  fpdf 的chinese包(里面包括一个chinese.php  以及一个示例文件)
  3. FPDI,用来读取现有的pdf文件,且兼容fpdf                                                                      

chines.php是解决中文乱码的 这三个文件放到第三方引用库的地方,修改下引用地址

就是这个语句  require_once('xx/xx/xx') 一定要使用正确地址

chinese.php有个demo

<?php
require('chinese.php');

$pdf=new PDF_Chinese();
$pdf->AddGBFont();//添加GB字体就是中文简体 还有一个Big5 是繁体
$pdf->AddPage();
$pdf->SetFont('GB','',20);
$pdf->Write(10,'测试');
$pdf->Output();
?>

然后需要修改一个文件fpdi下面的一个文件  这里我使用的是1.5.2版本 其他版本大同小异找见对应的文件

if (!class_exists('TCPDF', false)) {
    /**
     * Class fpdi_bridge
     */
    class fpdi_bridge extends PDF_Chinese//这里原先是继承pdf改为PDF_Chinese 因为chinese解决中文乱码 他已经继承了pdf类所以继承他就好了
    {
        // empty body
    }

}

 

 下面是我的demo

<?php
	error_reporting (E_ALL);  
	$file = dirname(__FILE__);
	
	$pdf_file   = $file.'/public/pdf/1.pdf';//引入需要添加字体的pdf
	
	require_once('vendor/chinese/chinese.php');//引入chines.php
	require_once('vendor/fpdi/fpdi.php');//引入fpdi
	$pdf = new FPDI();
	 
	$pageCount = $pdf->setSourceFile($pdf_file);
	 
	$pdf->AddPage();
	$tplIdx = $pdf->importPage($pageCount);
	$pdf->useTemplate($tplIdx, 0, 0);
	$pdf->AddGBFont();//添加中文字体
	$pdf->SetFont('GB');
	$pdf->SetXY(30, 150);//定位
    //使用iconv()转码
	$pdf->Write(10,iconv("utf-8","gb2312","同意开通!"));
	$pdf->Output();//这里是输出到浏览器  输出文件在里面添加参数即可$pdf->Output($file.'/demo.pdf', 'F');
	
	

这里主要是解决中文乱码的问题 如果是添加图片不需要chines.php文件的。 

 类似资料: