首页 后端开发 php教程 tp框架引入tcpdf插件步骤以及TCPD中文乱码的解决方法

tp框架引入tcpdf插件步骤以及TCPD中文乱码的解决方法

Apr 26, 2019 pm 05:31 PM
pdf文件 tcpdf thinkphp5

本篇文章主要讲述的是tp框架引入tcpdf插件步骤以及TCPD中文乱码的解决方法,具有一定的学习价值,有需要的朋友可以看看,希望能够帮助到你。

做项目时用到HTML生成PDF,发现TCPDF插件功能比较适合,因此选择了这款插件具体流程如下:

1.通过Composer下载最新版TCPDF,切换到程序根目录运行如下命令(Windows下DOS命令切换):

composer require tecnickcom/tcpdf

命令成功执行后,TCPDF会被下载到程序根目录中的vendor文件夹,如图:

examples中有60多个典型示例,需要什么功能直接看例子即可,例子对应列表见TCPDF官网:https://tcpdf.org/examples/

2.在控制器中调用TCPDF。

use TCPDF;

3.在方法中直接粘贴官方示例中的代码,成功运行。

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Nicola Asuni');
$pdf->SetTitle('TCPDF Example 001');
$pdf->SetSubject('TCPDF Tutorial');
$pdf->SetKeywords('TCPDF, PDF, example, test, guide');
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 001', PDF_HEADER_STRING, array(0,64,255), array(0,64,128));
$pdf->setFooterData(array(0,64,0), array(0,64,128));
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
if (@file_exists(dirname(__FILE__).'/lang/eng.php')) {
    require_once(dirname(__FILE__).'/lang/eng.php');
    $pdf->setLanguageArray($l);
}
$pdf->setFontSubsetting(true);
$pdf->SetFont('dejavusans', '', 14, '', true);
$pdf->AddPage();
$pdf->setTextShadow(array('enabled'=>true, 'depth_w'=>0.2, 'depth_h'=>0.2, 'color'=>array(196,196,196), 'opacity'=>1, 'blend_mode'=>'Normal'));
$html = <<<EOD
<h1>Welcome to <a href="http://www.tcpdf.org" style="text-decoration:none;background-color:#CC0000;color:black;"> <span style="color:black;">TC</span><span style="color:white;">PDF</span> </a>!</h1>
<i>This is the first example of TCPDF library.</i>
<p>This text is printed using the <i>writeHTMLCell()</i> method but you can also use: <i>Multicell(), writeHTML(), Write(), Cell() and Text()</i>.</p>
<p>Please check the source code documentation and other examples for further information.</p>
<p style="color:#CC0000;">TO IMPROVE AND EXPAND TCPDF I NEED YOUR SUPPORT, PLEASE <a href="http://sourceforge.net/donate/index.php?group_id=128076">MAKE A DONATION!</a></p>
EOD;
$pdf->writeHTMLCell(0, 0, &#39;&#39;, &#39;&#39;, $html, 0, 1, 0, true, &#39;&#39;, true);
$pdf->Output(&#39;example_001.pdf&#39;, &#39;I&#39;);
登录后复制

注意事项:

1.因为TCPDF使用定界符的方式输出html等内容,因此上述代码中的$html一直到EOD必须顶格。

2.ThinkPHP要关闭调试模式,不然输出乱码。

TCPD中文乱码的解决方法
最新版本的TCPDF已经支持中文,在生成PDF的方法中显示指定使用中文编码即可。

$pdf->SetFont(&#39;stsongstdlight&#39;, &#39;&#39;, 12);
登录后复制

TCPDF不能保存中文文件名的解决方法

PHP使用TCPDF生成PDF文件时,如果文件名是中文会被直接过滤掉,以下是TCPDF不能保存中文文件名的解决方法:

打开tcpdf.php文件,找到output函数,大约在7554行。

1、注释以下代码,大约在7565-7568行:

if ($dest[0] != &#39;F&#39;) {
    $name = preg_replace(&#39;/[\s]+/&#39;, &#39;_&#39;, $name);
    $name = preg_replace(&#39;/[^a-zA-Z0-9_\.-]/&#39;, &#39;&#39;, $name);
}
登录后复制

2、搜索该方法代码,替换如下代码,大约分别在7639、7670、7693、7718行。

header(&#39;Content-Disposition: attachment; filename="&#39;.basename($name).&#39;"&#39;);
登录后复制

替换为

header(&#39;Content-Disposition: attachment; filename="&#39;.$name.&#39;"&#39;);
登录后复制

 上述代码分别在该方法的case 'I':(打印PDF)、case 'D':(下载PDF)、case 'FD':(保存到本地文件)语句中。

这样PHP使用TCPDF生成PDF文件时就可以保存为中文名称了。

 相关教程:thinkPHP视频教程

以上是tp框架引入tcpdf插件步骤以及TCPD中文乱码的解决方法的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

使用Python和WebDriver实现网页截图并保存为PDF文件 使用Python和WebDriver实现网页截图并保存为PDF文件 Jul 08, 2023 pm 10:55 PM

使用Python和WebDriver实现网页截图并保存为PDF文件摘要:在Web开发和测试过程中,经常需要对网页进行截图以便进行分析、记录和报告。本文将介绍如何使用Python和WebDriver来实现网页截图,并将截图保存为PDF文件,以方便分享和存档。一、安装与配置SeleniumWebDriver:安装Python:访问Python官网(https:

使用PHP和TCPDF创建水印和背景图片 使用PHP和TCPDF创建水印和背景图片 May 11, 2023 am 08:37 AM

随着互联网及数字化时代的到来,图片的应用越来越广泛,尤其是一些场合需要为图片添加水印或背景图,以保障信息的安全性和版权保护。此时,我们可以利用PHP语言和TCPDF库来实现图片的加水印和背景图处理,以下就是具体实现方法。一、安装TCPDF库TCPDF是一个开源的PHP类库,用于创建PDF文档,但它也提供了一些工具来创建图片。TCPDF类库的安装相对简单,我们

如何在CakePHP中使用TCPDF? 如何在CakePHP中使用TCPDF? Jun 05, 2023 pm 12:40 PM

CakePHP是一种非常流行的PHP框架,它提供了很多方便的方法来进行Web应用程序的开发。当我们需要在应用程序中生成PDF文件时,TCPDF是一种非常常用的PDF生成库。这篇文章将会介绍如何在CakePHP中使用TCPDF。安装TCPDF首先,我们需要将TCPDF安装在我们的CakePHP项目中。这可以通过几种方式来完成,比如手动将TCPDF复制到项目的v

使用PHP和TCPDF创建条形码和二维码 使用PHP和TCPDF创建条形码和二维码 May 11, 2023 pm 04:42 PM

条形码和二维码是现代生活中广泛使用的重要工具。它们被广泛应用于各种领域,例如物流、零售、医疗、支付等。本文将介绍如何使用PHP和TCPDF库创建条形码和二维码。一、什么是TCPDF?TCPDF是一个用于生成PDF文档的PHP库。它是免费的、开源的,并且已经被广泛应用于许多项目中。除了生成PDF文档外,TCPDF还提供了创建条形码和二维码的功能。二、如何安装T

宝塔部署thinkphp5报错怎么办 宝塔部署thinkphp5报错怎么办 Dec 19, 2022 am 11:04 AM

宝塔部署thinkphp5报错的解决办法:1、打开宝塔服务器,安装php pathinfo扩展并启用;2、配置“.access”文件,内容为“RewriteRule ^(.*)$ index.php?s=/$1 [QSA,PT,L]”;3、在网站管理里面,启用thinkphp的伪静态即可。

html文件如何转换成pdf文件 html文件如何转换成pdf文件 Apr 02, 2024 pm 02:02 PM

转换方法:1、在线转换工具,如 pdfcrowd 和 online2pdf,无需安装即可快速将 HTML 文件转换成 PDF。2、浏览器插件,如 Chrome 的 HTML 转 PDF 插件,允许直接在浏览器中执行转换。3、专业软件,如 Adobe Acrobat 和 Foxit PhantomPDF,提供更全面的功能,支持快速批量转换和高级输出选项。

thinkphp5 url重写不行怎么办 thinkphp5 url重写不行怎么办 Dec 12, 2022 am 09:31 AM

thinkphp5 url重写不行的解决办法:1、查看httpd.conf配置文件中是否加载了mod_rewrite.so模块;2、将AllowOverride None中的None改为All;3、修改Apache配置文件.htaccess为“RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]”保存即可。

thinkphp5怎么获取请求过来的网址 thinkphp5怎么获取请求过来的网址 Dec 20, 2022 am 09:48 AM

thinkphp5获取请求网址的方法:1、使用“\think\Request”类的“$request = Request::instance();”方法获取当前的url信息;2、通过自带的助手函数“$request->url()”获取包含域名的完整URL地址。

See all articles