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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MySQL相关 – 死锁的发生和避免

    MySQL相关 – 死锁的发生和避免

    2022年2月17日
    53
  • 普通索引与唯一索引的区别_唯一索引怎么设置

    普通索引与唯一索引的区别_唯一索引怎么设置所谓普通索引,就是在创建索引时,不附加任何限制条件(唯一、非空等限制)。该类型的索引可以创建在任何数据类型的字段上。所谓唯一索引,就是在创建索引时,限制索引的值必须是唯一的。通过该类型的索引可以更快速地查询某条记录。普通索引还是唯一索引?假设你在维护一个市民系统,每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号。如果市民系统需要按照身份证号查姓名,就会…

    2022年9月20日
    0
  • 解决P2P传输瓶颈

    解决P2P传输瓶颈随着嵌入式技术这几年的迅速发展,在个人电脑平台上正显示出强大市场需求的流媒体技术,目前逐渐有向嵌入式平台转移的趋势。个人便携化、家电化的媒体消费需求,为这次平台的转移提供了市场契机。IPTV正是在这场消费革命中处在风口浪尖的焦点。业内大多认为IPTV蕴含了巨大的商业利益,但至今仍鲜有涉足者,其中原因之一是网络速度问题。本文介绍了对等网络技术,即点对点(P2P)技术,将其应用到IPTV网络传输中,可

    2022年7月16日
    9
  • wireshark网络安全分析工具之万文多图详解(持续更新)[通俗易懂]

    wireshark网络安全分析工具之万文多图详解(持续更新)[通俗易懂]1.基本介绍2.下载与安装3.详细教程3.1软件界面介绍3.1.1菜单栏3.1.2工具栏3.1.3数据包列表区3.1.4数据包详细区3.1.5数据包字节区3.2Wireshark过滤器3.2.1捕获过滤器3.2.2显示过滤器3.3过滤规则3.3.1语法讲解3.3.2过滤实例4.实战案例

    2022年6月21日
    23
  • 256. Spinnaker介绍(企业级K8S自动化运维平台)

    256. Spinnaker介绍(企业级K8S自动化运维平台)文章目录1.Spinnaker简介2.Spinnaker逻辑架构3.Spinnaker核心功能3.1集群管理3.2部署管理4.Spinnaker管理方法5.部署Spinnaker的Armory发行版1.Spinnaker简介Spinnaker是Netflix在2015年开源的一款持续交付平台,它继承了Netflix上一代集群和部署管理工具Asgard:Web-basedCloudManagementandDeployment的优点,同时根据公司业务以及技术的的发展抛

    2025年6月25日
    0
  • The Class File Viewer cannot handle the given input

    The Class File Viewer cannot handle the given inputThe Class File Viewer cannot handle the given input

    2022年4月24日
    67

发表回复

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

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