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案例百度云

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

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