利用Tcpdf生成pdf,使用 html标签,生成 pdf

一、 拉取扩展代码
使用 composer 拉取

composer require tecnickcom/tcpdf

https://github.com/tecnickcom/tcpdf 直接下载

官网地址 : http://www.tcpdf.org

如下效果:

二、开发代码 html 生成pdf
html样式格式可以参考官网案例 https://tcpdf.org/examples/

require_once(dirname(dirname(__FILE__)) . '/sdk/tcpdf.php'); //记得引入public function createPdf($pdf_name,$data=[],$type=1){if(empty($pdf_name)){$pdf_name = md5(microtime());}$pdf_name = $pdf_name;$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT,true, 'UTF-8', false);// 设置文档信息$pdf->SetCreator('hello world');$pdf->SetAuthor('hello world');$pdf->SetTitle('hello world');$pdf->SetSubject('TCPDF Tutorial');$pdf->SetKeywords('TCPDF, PDF, PHP');// 设置页眉和页脚信息
//      $pdf->SetHeaderData('logo.png', 30, 'Helloweba.com', '致力于WEB前端技术在中国的应用', array(0,64,255), array(0,64,128));$pdf->setFooterData(array(0,64,0), array(0,64,128));// 设置页眉和页脚字体$pdf->setHeaderFont(Array('stsongstdlight', '', '10'));$pdf->setFooterFont(Array('helvetica', '', '8'));// 设置默认等宽字体$pdf->SetDefaultMonospacedFont('courier');// 设置间距$pdf->SetMargins(15, 27, 15);$pdf->SetHeaderMargin(5);$pdf->SetFooterMargin(10);// 设置分页$pdf->SetAutoPageBreak(TRUE, 25);// set image scale factor$pdf->setImageScale(1.25);// set default font subsetting mode$pdf->setFontSubsetting(true);//设置字体$pdf->SetFont('stsongstdlight', '', 14);//可以设置自己中意字体$pdf->AddPage();$str1 = $this->getHtml($pdf_name,$data,$pdf);$pdf->writeHTML($str1, true, false, true, false, '');//输出PDFob_clean();$pdf_path = ROOT_PATH .'public/pdf/'.$pdf_name.'.pdf';$pdf_png_path = ROOT_PATH .'publi/pdf/png/'.$pdf_name.'.png';$pdf->Output($pdf_path, 'F'); //I:将文件内联发送到浏览器(默认)。如果可用,则使用插件。当在生成PDF的链接上选择“另存为”选项时,使用name指定的名称。D:发送到浏览器并强制使用name指定的名称下载文件。F: 以指定的名称保存到本地服务器文件。S:以字符串形式返回文档(忽略名称)。FI:等效于F + I选项FD:等效于F + D选项E:返回文档为base64 mime多部分电子邮件附件(RFC 2045) $this->pdf2png($pdf_path,$pdf_png_path);return array($pdf_url,$pdf_png_url);}//获取html样式
public funcitoin getHtml(){$html = '<h1>HTML Example</h1>Some special characters: &lt; € &euro; € &amp; è &egrave; &copy; &gt; \\slash \\\\double-slash \\\\\\triple-slash<h2>List</h2>List example:<ol><li><img src="data:images/logo_example.png" alt="test alt attribute" width="30" height="30" border="0" /> test image</li><li><b>bold text</b></li><li><i>italic text</i></li><li><u>underlined text</u></li><li><b>b<i>bi<u>biu</u>bi</i>b</b></li><li><a href="http://www.tecnick.com" dir="ltr">link to http://www.tecnick.com</a></li><li>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.<br />Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.</li><li>SUBLIST<ol><li>row one<ul><li>sublist</li></ul></li><li>row two</li></ol></li><li><b>T</b>E<i>S</i><u>T</u> <del>line through</del></li><li><font size="+3">font + 3</font></li><li><small>small text</small> normal <small>small text</small> normal <sub>subscript</sub> normal <sup>superscript</sup> normal</li></ol><dl><dt>Coffee</dt><dd>Black hot drink</dd><dt>Milk</dt><dd>White cold drink</dd></dl><div style="text-align:center">IMAGES<br /><img src="data:images/logo_example.png" alt="test alt attribute" width="100" height="100" border="0" /><img src="data:images/tcpdf_box.svg" alt="test alt attribute" width="100" height="100" border="0" /><img src="data:images/logo_example.jpg" alt="test alt attribute" width="100" height="100" border="0" /></div>';return $html;}

也可以使用其他形式,生成 pdf,有兴趣的同学可以尝试一下

三、使用 Imagick 将 pdf 生成 png
根据介绍安装一下php扩展 https://www.php.net/manual/zh/book.imagick.php

 //pdf合并转换一张图片 from_path pdf来源地址(绝对地址) target_path 图片存储地址 (绝对地址)public  function pdf2png($from_path,$target_path){try {$img =  new \Imagick();$img->setCompressionQuality(100);$img->setResolution(120, 120);$img->readImage($from_path);$canvas = new \Imagick();$imgNum = $img->getNumberImages();foreach ($img as $k => $sub) {$sub->setImageFormat('png');$sub->stripImage();$sub->trimImage(0);$width = $sub->getImageWidth() + 10;$height = $sub->getImageHeight() + 10;if ($k + 1 == $imgNum) $height += 10;$canvas->newImage($width, $height, new \ImagickPixel('white'));$canvas->compositeImage($sub, \Imagick::COMPOSITE_DEFAULT, 5, 5);}$canvas->resetIterator();$canvas->appendImages(true)->writeImage($target_path);return $target_path;} catch (Exception $e) {echo $e->getMessage();echo $e->getTraceAsString();return false;}}

四、注意事项

1、使用 Tcpdf html生成 pdf时,注意一下html的样式问题,不支持外部css样式

2、使用 Tcpdf html生成 pdf时,注意一下html的样式问题, 你看到html不一定能生成正常html哦!

3、Imagick 安装时,一定要注意检查是否安装成功,否则会有报错信息,不能正常使用

PHP Tcpdf 生成 pdf 并将 (Imagick) pdf 生成 图片相关推荐

  1. php生成pdf中文断码_PHP生成PDF完美支持中文,解决TCPDF乱码

    //生成pdf最近会用到,找到一些资料,非原创 PHP生成PDF格式文件以TCPDF为基础,TCPDF是一个用于快速生成PDF文件的PHP5函数包.TCPDF基于FPDF进行扩展和改进.支持UTF-8 ...

  2. python使用fpdf生成发票格式的pdf文件包含:文字、图片logo、表格、条形码等;

    python使用fpdf生成发票格式的pdf文件包含:文字.图片logo.表格.条形码等: pip install fpdf #python使用fpdf生成发票格式的pdf文件包含:文字.图片logo ...

  3. python处理pdf 层_Python处理PDF及生成多层PDF实例代码

    Python提供了众多的PDF支持库,本文是在Python3环境下,试用了两个库来完成PDF的生成的功能.PyPDF对于读取PDF支持较好,但是没找到生成多层PDF的方法.Reportlab看起来更成 ...

  4. itext生成pdf间距_使用itext生成pdf

    在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过 在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超级连接显示或下载得到 ...

  5. itext 生成pdf 输出特殊符号_JAVA提取PDF内容及转换PDF为图片

    今天给大家分享一下使用java处理pdf文件,包括提取pdf文本.提取pdf图片.pdf转图片三种操作. 主要使用到的库是apache开源的pdfbox,目前最新版本是2.0.x,网上的资料一般是1. ...

  6. 【PDF】java使用Itext生成pdf文档--详解

    [API接口] 一.Itext简介 API地址:javadoc/index.html:如 D:/MyJAR/原JAR包/PDF/itext-5.5.3/itextpdf-5.5.3-javadoc/i ...

  7. html转换成pdf工具-wkhtmltopdf、Python生成PDF(pdfkit库)

    文章目录 一.html转换成pdf工具-wkhtmltopdf 1. 什么是wkhtmltopdf 2. 如何使用它? 3. 常见问题 error while loading shared libra ...

  8. java设置pdf不可编辑_Java动态生成pdf文件(使用itext编辑pdf)

    一.创建pdf模板 使用PDFelement制作pdf模板(数据域的名称对应后面插入的key) 二.导入maven依赖 com.itextpdf itextpdf 5.5.13 com.itextpd ...

  9. java-使用 flying-saucer 通过 xhtml 生成 pdf 文档支持 css 和 图片

    java-使用 flying-saucer 通过 xhtml 生成 pdf 文档支持 css 和 图片 重要说明: 1.使用 xhtml 生成 pdf ,对于 xhtml 的语法要求非常严格: 2.中 ...

  10. 使用FreeMarker生成word文档(带图片),word转pdf,预览pdf,pdf下载工具类

    一.下载或配置: 下载jar包 :freemaker的jar包下载 下载jar包 :aspose-words的jar包下载 或者配置maven依赖: pom.xml添加aspose的依赖包(maven ...

最新文章

  1. springmvc+quartz简单实现定时调度
  2. 百度地图api改变覆盖物背景实例及css颜色值简介
  3. 今晚直播 | 小米人工智能部崔世起:小爱同学全双工技术实践
  4. 平流式初沉池贮砂斗计算_除磷药剂如何投加效果最好?投加量如何计算?
  5. 网络之四海:光纤收发器TX、RX分别表示什么?区分单纤双纤收发器的方法
  6. IntelliJ IDEA for Mac的快速切换当前主题方案(Quick switch current scheme)
  7. UVA 536——Tree Recovery
  8. linux系统登陆问题,Linux之登陆问题
  9. mybatis plus 事务管理器_SpringBoot第七篇:springboot开启声明式事务
  10. Kubernates和Docker
  11. SAP License:再谈SAP系统发票校验的”事后借记”
  12. java自动封箱_Java程序员面试,自动封箱/拆箱原理与包装类的缓冲机制你知道么?(转)...
  13. C++自学17:goto
  14. 使用nginx反向代理解决前端跨域问题
  15. 深度解析MySQL启动时报“The server quit without updating PID file”错误的原因
  16. 四个管理举措提高研发团队工作效率
  17. 手机虚拟键盘的设置显示隐藏
  18. 基于R语言结构方程模型
  19. 构建前端项目及使用技术
  20. 一层神经网络实现鸢尾花数据集分类

热门文章

  1. 按拼音重复数匹配夫妻相
  2. 力扣119杨辉三角 II:代码实现 + 方法总结(数学规律法 记忆法/备忘录)
  3. ESP8266--esp8266-alink-v1.0学习笔记(一)
  4. 浮点数如何在计算机中表示
  5. 【论文笔记之 Conv-TasNet】Surpassing Ideal Time–Frequency Magnitude Masking for Speech Separation
  6. IMS业务简介,IMS全业务网络结构,IMS技术的特点
  7. 分支限界——最大团问题
  8. 电脑扫描的文件怎么转换成word文档并修改
  9. linux桌面发展方向,不知道就OUT了!Linux桌面领域7大趋势
  10. 中计播客 | iPhone X评测结果出炉 表现不如iPhone 8