php 导出pdf 简书,laravel5.8(二十三)导出PDF

有需求需要使用PHP导出pdf。下面记录一下我使用的两种方式

一:laravel-tcpdf

导出PDF文件Laravel框架为我们集成了一个插件tcpdf。

下载地址:

然后使用composer进行安装就可以了。

使用的时候记得use 一下 命名空间。

但是这里有一个问题,使用这个插件导出文件无法使用中文,且我还没有找到解决办法,因此,这个laravel的tcpdf插件我就没有使用。

二:tcpdf

tcpdf官方网站:

我下载了完整版的TCPDF

下载地址:

我们将下载的包放在框架根目录下的app/Extend/tcpdf中。

调用代码:

require_once("../app/Extend/tcpdf/tcpdf.php");

$pdf = new \TCPDF();

// 设置文档信息

$pdf->SetCreator('懒人开发网');

$pdf->SetAuthor('懒人开发网');

$pdf->SetTitle('TCPDF示例');

$pdf->SetSubject('TCPDF示例');

$pdf->SetKeywords('TCPDF, PDF, PHP');

// 设置页眉和页脚信息

$pdf->SetHeaderData('tcpdf_logo.jpg', 30, 'LanRenKaiFA.com', '学会偷懒,并懒出效率!', [0, 64, 255], [0, 64, 128]);

$pdf->setFooterData([0, 64, 0], [0, 64, 128]);

// 设置页眉和页脚字体

$pdf->setHeaderFont(['stsongstdlight', '', '10']);

$pdf->setFooterFont(['helvetica', '', '8']);

// 设置默认等宽字体

$pdf->SetDefaultMonospacedFont('courier');

// 设置间距

$pdf->SetMargins(15, 15, 15);//页面间隔

$pdf->SetHeaderMargin(5);//页眉top间隔

$pdf->SetFooterMargin(10);//页脚bottom间隔

// 设置分页

$pdf->SetAutoPageBreak(true, 25);

// set default font subsetting mode

$pdf->setFontSubsetting(true);

//设置字体 stsongstdlight支持中文

$pdf->SetFont('stsongstdlight', '', 14);

//第一页

$pdf->AddPage();

$pdf->writeHTML('

第一页内容

');

$pdf->writeHTML('

我是第一行内容

');

$pdf->writeHTML('

我是第二行内容

');

$pdf->writeHTML('

我是第三行内容

');

$pdf->Ln(5);//换行符

$pdf->writeHTML('

懒人开发网

');

//第二页

$pdf->AddPage();

$pdf->writeHTML('

第二页内容

');

//输出PDF

$pdf->Output('t.pdf', 'I');//I输出、D下载

三:TCPDF解决保存中文文件名的方法

这部分是百度过来的,网上挺多关于这个的文章的,内容基本一致。

1:找到output函数,注释以下代码(在7560行左右):

if ($dest[0] != 'F') {

$name = preg_replace('/[\s]+/', '_', $name);

$name = preg_replace('/[^a-zA-Z0-9_\.-]/', '', $name);

}

2:搜索下面这行代码

header('Content-Disposition: attachment; filename="'.basename($name).'"');

替换成:

header('Content-Disposition: attachment; filename="'.$name.'"');

以上大概就是tcpdf的基本使用。

有好的建议,请在下方输入你的评论。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值