php fpdf使用记录

使用composer安装fpdf

c 复制代码
> composer require setasign/fpdf

简单创建一个pdf文件并输出下载

php 复制代码
//fpdf版本:"setasign/fpdf": "^1.8",
// 创建PDF实例
$pdf = new \FPDF();
 
// 设置文档信息
$pdf->SetAuthor('Your Name');
$pdf->SetTitle('Your PDF Title');
// 开始新页面
$pdf->AddPage();
// 设置字体
$pdf->SetFont('Arial', 'B', 16);
// 添加文本
$pdf->Cell(40, 10, 'Hello World!');
$pdf->Output('document.pdf', 'D');

导入pdf出现报错

This PDF document probably uses a compression technique which is not supported by the free parser shipped with FPDI. (See https://www.setasign.com/fpdi-pdf-parser for more details)

解决:使用AcrobatDC导出4.0版本(最低版本)的pdf

php 复制代码
$page_count = $pdf->setSourceFile('temp_pdf_test2.pdf');

如何基于现有的pdf进行编辑

php 复制代码
    use \setasign\Fpdi\Fpdi;
    $pdf = new FPDI();    //实例化
    $pdf->setSourceFile('temp_pdf_test2.pdf');    //设置源文件
    $pdf->AddPage();    //添加一个页面(本身pdf是空的,需要加一个空白页来存储源文件的页面)
    $tpl = $pdf->importPage(1);    //获取源文件模板页面id
    $pdf->useTemplate($tpl, 0, 0);    //将模板添加到pdf实例中
    
    $pdf->AddGBFont("GB","");//添加中文字体,待使用
    
    $pdf->SetFont('GB','',13);    //使用字体
    $pdf->SetXY(48,84);    //定位
    $pdf->Write(12,iconv("utf-8","gb2312","xxxx"));    //渲染文字

解决中文乱码的问题

下载支持中文的改写后的代码

如果只使用fpdf(读),就直接引用这个里面的chinese.php即可

如果还需要写,就需要改写fpdi源码

将fpdi下的FpdfTpl.php改写为:

php 复制代码
namespace setasign\Fpdi;
require_once(dirname(__FILE__) . './../../fpdf_chinese/chinese.php');
/**
 * Class FpdfTpl
 * This class adds a templating feature to FPDF.
 */
class FpdfTpl extends \PDF_Chinese
{
    use FpdfTplTrait;
}

其他

链接: 更换字体的问题链接

相关推荐
Anastasiozzzz5 分钟前
G1垃圾回收流程详解
java·开发语言·算法
筱白爱学习41 分钟前
RestHighLevelClient详细使用手册
linux·服务器·php
前路不黑暗@1 小时前
Java项目:Java脚手架项目的通用组件的封装(五)
java·开发语言·spring boot·学习·spring cloud·bootstrap·maven
sa100271 小时前
京东评论接口调用、签名生成与异常处理
开发语言·数据库·python
赵谨言1 小时前
基于Python实现地理空间数据批处理技术探讨及实现--以“多规合一“总体规划数据空间叠加分析为例
大数据·开发语言·经验分享·python
独自破碎E1 小时前
BISHI40数组取精
java·开发语言
丑八怪大丑2 小时前
Java面向对象(进阶)
java·开发语言
java1234_小锋2 小时前
Java高频面试题:Java中变量和常量有什么区别?
java·开发语言·面试
enjoy嚣士2 小时前
Java 之 实现C++库函数等价函数遇到的问题
java·开发语言·c++
毕设源码-郭学长2 小时前
【开题答辩全过程】以 基于java的停车管理系统的设计与实为例,包含答辩的问题和答案
java·开发语言