利用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. 滴滴千万级ElasticSearch平台发展之路!
  2. opencv中xml/yml文件操作类
  3. HarmonyOS之常用组件WebView的使用
  4. Gengine规则引擎
  5. 【转】c# [Serializable]的作用
  6. 潍坊学院计算机系崔玲玲,人工免疫算法在引水工程中的应用.pdf
  7. [Leedcode][第215题][JAVA][数组中的第K个最大元素][快排][优先队列]
  8. CentOS 6.8 虚拟机安装详解
  9. web.config学习之assembly
  10. mysql添加序列触发器_Oracle中使用触发器(trigger)和序列(sequence)模拟实现自增列实例...
  11. 字体编辑器_Mac系统常见的Birdfont字体编辑器
  12. 性能测试从入门到精通高级篇 - Jmeter之IP伪装和欺骗(详解教程)
  13. 修改HOST文件屏蔽网站
  14. 计算机密码学题目,计算机密码学习题
  15. 实战02-selenium模拟QQ邮箱登录并批量爬取指定邮件的附件——体验版
  16. ESLint语法检查
  17. 微信小程序商城项目(篇7):商城详情页实现
  18. html5无序列表,有序列表,定义列表,组合标签,div分区标签
  19. 如何打开不同格式的图片?图片格式转换的方法又有哪些?
  20. 计算机软件基础 自考,计算机软件基础自考本科.ppt

热门文章

  1. 明明使用了索引SQL查询还是慢的原因
  2. 【组件】24系列EEPROM/FRAM通用接口
  3. 怎么样利用空闲时间做网赚?
  4. 关于上次我写的那个ATM程序 ,程序没有什么错,但是有些麻烦,两个类中有好多成员函数重复,因此我把ATM重新写了一边。...
  5. 淘淘商城——Redis五种数据类型介绍
  6. 基于java的推箱子游戏系统设计与实现(项目报告+答辩PPT+源代码+部署视频)
  7. wget下载onedrive文件不403 forbidden的方法(简单有效含例子)
  8. ​海外公链集体哑火? BATJ迅雷却成为区块链3.0拓荒者 【区块链3.0一周年】
  9. android2.x中android:layout_marginRight不起作用的解决办法
  10. 愿Linux红帽旋风吹得更加猛烈吧!