pdf下载插件tcpdf

pdf下载插件tcpdfThinkphp框架引用tcpdf一:引入tcpdf整个文件夹到项目如下目录/ThinkPHP/Library/Vendor/tcpdftcpdfv6.2.12版本百度网盘下载链接:http://pan.baidu.com/s/1kVhrQoJ密码:bfh4二:简单的使用 三:关于下载PDF时,插件把中文文件名屏蔽了的解决方法四:把tcpdf中的插件引入到项目中

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Thinkphp框架引用tcpdf

一:引入tcpdf整个文件夹到项目如下目录

/ThinkPHP/Library/Vendor/tcpdf

tcpdf v6.2.12版本百度网盘下载链接:http://pan.baidu.com/s/1kVhrQoJ 密码:bfh4

简单的使用

在模块common路径下的function.php中添加方法


/**
 * @param $url 获取页面的url
 * @param $fileName 文件名
 * @param $type 类型,有下载,浏览器中打开等
 */
function downloadPdf($url, $fileName, $type) {
    //1.获取html
    $html = file_get_contents($url);
//    dump($html);
    vendor('tcpdf.tcpdf');
    $pdf = new \Tcpdf(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
    // 设置打印模式
    $pdf->SetCreator(PDF_CREATOR);
    $pdf->SetAuthor('Libin');
    $pdf->SetTitle('TCPDF Example 001');
    $pdf->SetSubject('TCPDF Tutorial');
    $pdf->SetKeywords('TCPDF, PDF, example, test');
    // 是否显示页眉
    $pdf->setPrintHeader(false);
    // 设置页眉显示的内容
    $pdf->SetHeaderData('logo.png', 60, 'baijunyao.com', '文嘉博客', array(0,64,255), array(0,64,128));
    // 设置页眉字体
    $pdf->setHeaderFont(Array('dejavusans', '', '12'));
    // 页眉距离顶部的距离
    $pdf->SetHeaderMargin('5');
    // 是否显示页脚
    $pdf->setPrintFooter(true);
    // 设置页脚显示的内容
    $pdf->setFooterData(array(0,64,0), array(0,64,128));
    // 设置页脚的字体
    $pdf->setFooterFont(Array('dejavusans', '', '10'));
    // 设置页脚距离底部的距离
    $pdf->SetFooterMargin('10');
    // 设置默认等宽字体
    $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
    // 设置行高
    $pdf->setCellHeightRatio(1);
    // 设置左、上、右的间距
    $pdf->SetMargins('10', '10', '10');
    // 设置是否自动分页  距离底部多少距离时分页
    $pdf->SetAutoPageBreak(TRUE, '15');
    // 设置图像比例因子
    $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->AddPage();
    // 设置字体
    $pdf->SetFont('stsongstdlight', '', 14, '', true);
    $pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);
    $pdf->Output($fileName, $type);

}

在控制器方法中调用

public function downloadPdf() {
    $uri = '?m=Home&c=Index&a=show';
    $url='http://'.$_SERVER['SERVER_NAME'].$uri;
    $url = 'http://tcpdf.demo.com/index.php?m=Home&c=Index&a=show';
    downloadPdf($url, 'demo1.pdf', 'I');

}
 
 
 
转换为PDF的页面是uri中show方法对应的方法,添加一个显示出模板
 
测试:http://tcpdf.demo.com/index.php?m=Home&c=Index&a=downloadPdf

三:关于下载PDF时,插件把中文文件名屏蔽了的解决方法

这个看tcpdf对象的Output方法就看到:

看这一小段我们我们就知道dest这个参数要怎么操作了

//Normalize parameters
if (is_bool($dest)) {
   $dest = $dest ? 'D' : 'F';
}
$dest = strtoupper($dest);
if ($dest[0] != 'F') {
   $name = preg_replace('/[\s]+/', '_', $name);
   $name = preg_replace('/[^a-zA-Z0-9_\.-]/', '', $name);
}
我的方法是在方法中添加一条参数,为了不改变原始方法参数,我添加第三个参数,并设置默认值(support Chinase name)
public function Output($name='doc.pdf', $dest='I', $scn='false'),然后修改代码套个判断,方法中不填第三个参数不影响原来的代码
$dest = strtoupper($dest);
if(!$scn) {
          if ($dest[0] != 'F') {
              $name = preg_replace('/[\s]+/', '_', $name);
              $name = preg_replace('/[^a-zA-Z0-9_\.-]/', '', $name);
          }
      }

调用方法时候

$pdf->Output($fileName, $type, true);

测试OK

四:把tcpdf中的插件引入到项目中,学习一下,一共有65个例子。

Demo案例百度云

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195947.html原文链接:https://javaforall.net

(0)
上一篇 2025年10月7日 上午11:22
下一篇 2025年10月7日 下午12:01


相关推荐

  • sqlserver中类型decimal

    sqlserver中类型decimaldecimal(18,0)18是定点精度,0是小数位数。decimal(a,b)a指定指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38。b指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从0到a之间的值。默认小数位数是0。

    2022年7月20日
    75
  • ORACLE数据库数据的备份与恢复

    ORACLE数据库数据的备份与恢复数据备份恢复在数据库管理中至关重要,今天,总结一下数据库备份与恢复的方案,需要注意的方面和实际操作!、

    2022年7月1日
    25
  • 如何求a类不确定度_不确定度a类分量与随机误差相对应

    如何求a类不确定度_不确定度a类分量与随机误差相对应1.计算A类不确定度u(a):某一工业容器温度控制要求为10℃,用温度计连续。A类不确定度的计算方法n=6时,u(a)=S(x)数据平均值设为q用贝塞尔公式S(x)*S(x)=[(X1-q)*(X1-q)+(X2-q)*(X2-q).+(X6-q)(X6-q)]/(6-1)可求出a类不确定度b类Ub就是0.6."A类不确定度"和"B类不确定度"的区别在于测定方法、输入量、系统效应的不…

    2026年2月26日
    5
  • Swagger注解-@ApiParam

    Swagger注解-@ApiParam使用场景在 Rest 接口上或 Rest 接口参数前边使用概述为 Rest 接口参数添加其它元数据 导入到 yapi 中不会被解析 属性属性名称数据类型默认值说明 nameString 参数名称 参数名称将从 filed method parameter 名称中派生 但你可以覆盖它 路径参数必须始终命名为它们所代表的路径部分 valueString

    2026年3月18日
    1
  • Hive实现笛卡尔积

    Hive实现笛卡尔积如下方式可以实现笛卡尔积select*fromaleftjoinbon1=1假设a表100行,b表20万行,则笛卡尔积后为100*20w=2000w行假设a表100行,b表20万*60行,则笛卡尔积后为100*60*20w=12亿行假设a表1000行,b表20万行,则笛卡尔积后为1000*20w=20000w行=2亿行严重影响执行效率…

    2022年7月11日
    21
  • String转换成json格式(二):org.codehaus.jettison.json.JSONObject

    String转换成json格式(二):org.codehaus.jettison.json.JSONObject实例 将 str 转换成 JSONObjct 格式 publicstatic String args Stringstr result success message 成功 JSONObjectjs try json newJSONObjec str System ou

    2026年3月17日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号