ERP系统进入尾声,各种送货单、退货单、合同、对账单等等一系列的东东排着队调打印格式。HTML5+CSS3已经这样流行,然则眼下,基于CSS3的打印控制,居然还处于原始部落阶段,Chrome、Firefox、Edge等连简单的@page都支持得不完善。经过一番折腾,终于找到好的解决方案,即借道输出PDF,PHP抓取目标的HTML代码,然后输出到指定的解析器,再生成最终的打印格式。

实际上,这个模式里:

  • HTML5+CSS3,只是输出内容的调节环节,需要确保CSS3 @page的全特性支持无误。尤其是长文章(合同)分页,和长表格自动分页(最好是thead和tfoot能分页重复显示)。
  • PDF预览时,实际上就是打印前的排版预览,之后就直接输出打印即可。
  • PDF可供用户自行下载成本地文件做备份。
  • HTML内容(PDF内容),可以通过缓存类库进行缓存,自己调控周期、压缩存储即可。

于是打印问题迎刃而解。

本文推荐两个可用的类库:Prince和wkhtmltopdf。这两位都是跨平台系统支持,并且不需要内嵌于php,不需要有任何担心。这两货都需要在官网下载安装,如果是windows,记得安装的时候别放在C盘,不然会无法执行。

php调用:

Prince:下载他官方的这个类库:Prince for php。顺带说,Prince的类库里支持.net、Java、Python、Prel等等。

Snappy:这个是国外某开发者基于wkhtmltopdf的php composer扩展,直接在你项目中执行:composer require knplabs/knp-snappy,即可。Snappy github地址。

Prince和wkhtmltopdf,实际上就是一个html5+css3的解析器,并且是完整支持css3 @page部分的打印特性的功能。并且具备生成PDF的功能。其中Prince是收费的,但他提供免费使用License,美中不足的地方就是生成PDF预览时,第一页右上角会有一个P字的icon,不过在打印的时候就会消失掉。

两者比较,Prince对中文样式的支持更好(可能wkhtmltopdf是因为我的CSS写法有问题,没有针对@media print),修改中文字体,wkhtmltopdf还是会用默认的宋体输出,而Prince则是你指定的字体。

两者的调用代码都很简单。

Prince部分:

<?phprequire '../bootstrap.php';$prince = new \xErp\Helper\Prince('D:\\prince\\prince-10r7-win64\\bin\\prince.exe');header('Content-Type: application/pdf');header('Content-Disposition: inline; filename="foo.pdf"');$prince->convert_file_to_passthru('http://www.163.com');

Snappy部分:

<?phprequire '../bootstrap.php';use Knp\Snappy\Pdf;$snappy = new Pdf('D:\xampp\wkhtmltopdf\bin\\wkhtmltopdf.exe');header('Content-Type: application/pdf');//header('Content-Disposition: attachment; filename="file.pdf"');print $snappy->getOutput('http://www.163.com');

就是这样酸爽,再也不用怕客户改打印格式了,随便改吧,亲。

无图无真相,来个截图好了。

好像这样的页面,实际上是基于HTML生成的,调试只需调试HTML+CSS即可,截图如下:

用HTML+CSS调打印,基本上一个格式,最多不超过1个小时,基本上就能调完。这样后期,管你有多少分报表,我统一用http://erp/print/报名类型/报表ID.ext的url,.html就是请求普通的html输出,.pdf就是请求将html输出pdf,真是要多快有多快啊!

本文转自:https://www.oschina.net/

PHP输出PDF打印HTML5+CSS3打印格式控制相关推荐

  1. php 生成打印送货单,PHP输出PDF打印HTML5+CSS3打印格式控制

    ERP系统进入尾声,各种送货单.退货单.合同.对账单等等一系列的东东排着队调打印格式.HTML5+CSS3已经这样流行,然则眼下,基于CSS3的打印控制,居然还处于原始部落阶段,Chrome.Fire ...

  2. js打印html5,控制台打印文字效果js插件-typed.js

    typed.js是一款模拟控制台打印文字效果的js插件.typed.js可以自由的控制要打印的文字,以及打印的速度等,可以制作出逼真的打印文字效果. 安装 可以通过bower来安装typed.js插件 ...

  3. 条码打印软件有关打印错误的解决方法

    在使用条码打印软件制作好条码标签之后,有的客户是直接连接打印机进行打印,也有的客户是输出PDF文档进行打印,那么如果在连接打印机或者输出PDF文档的时候出现打印错误的情况,该怎么解决.具体如下: 1. ...

  4. 360 html 转pdf文件,360浏览器打印网页输出为pdf文件怎么设置

    3.cad怎么打印pdf文件 打印过程需要1~5秒,打印完成后会自动打开保存成功的PDF文档,下图是百度经验首页打印后的输出文件; 看了"360浏览器打印网页输出为pdf文件怎么设置&quo ...

  5. 【新】CSDN文章一键打印、输出PDF(自动阅读全文、全清爽模式)

    版权声明:本文为丨匿名用户丨原创文章,转载请注明出处:[新]CSDN文章一键打印.输出PDF(自动阅读全文.全清爽模式)_丨晋丨-CSDN博客_csdn打印https://blog.csdn.net/ ...

  6. 标签打印软件输出PDF文件过大时如何解决?

    在用标签打印软件制作标签输出PDF文件时,如果数据过多可能会出现输出的PDF文件过大,这种情况如何解决呢?在标签打印软件中,输出PDF文件时可以对PDF文件进行压缩和拆分,压缩方式有六种,分别为:默认 ...

  7. 《HTML5+CSS3网页布局和样式精粹》.(张亚飞).[PDF]ckook

    图书作者: 张亚飞 图书编号: 9787302261834 图书格式: PDF 出 版 社: 清华大学出版社 出版年份: 2011 图书页数: 500-600 [内容简介] 对于初入门的网页设计者和开 ...

  8. Cadence orCAD如何输出PDF格式的原理图

    今天教大家如何在Cadence OrCAD中输PDF格式的原理图,orCAD输出PDF的原理图直接通过 打印的方式打印输出即可,操作方法如下所示: 1 .先安装"adobe pdf 虚拟打印 ...

  9. 使用PDF处理控件Aspose.PDF以编程方式打印PDF文档完整攻略

    许多公司在很大程度上减少了纸张的使用.但是,在某些情况下打印很重要.例如,系统可能包含PDF格式的在线订单的详细信息.他们需要在分发在线订单进行交付时打印PDF.他们大规模处理项目,因此手动打印每个文 ...

最新文章

  1. ​万字总结83篇文献:深度强化学习之炒作、反思、回归本源
  2. 大型网站技术架构(二)架构模式
  3. [知识图谱]利用py2neo从Neo4j数据库获取数据
  4. 那些年,使用Github的正确姿势
  5. java链表的输出_Java输出链表倒数第k个节点
  6. kali锁屏后无法唤醒_看一下吧,自己对线程以及锁的概念和原理了解是否正确...
  7. vertical-align和line-height的深入应用
  8. python解释器的使用
  9. xcode 快捷_您必须知道的Xcode快捷方式
  10. Visual Studio 2017 编译Clang
  11. 张掖市职教中心计算机专业,张掖市职教中心参加2021年全市中等职业学校学生教师技能大赛成绩喜人...
  12. 工业和能源1994-2019年省级面板数据
  13. 计算机专业专科生毕业论文题目,★专科生计算机专业论文题目专科生计算机专业毕业论文题目大全专科生计算机专业论文选题参考...
  14. Innovation - 3W咖啡馆 - 这里是互联网人的社交圈子
  15. Go 语言中的switch分支
  16. 松鼠分松果解题 c++
  17. ping命令的七种用法总结
  18. 阿里云服务器CPU Intel Xeon Platinum 8269CY和8163处理器区别
  19. 深度学习电脑硬件配置
  20. Hbase设置数据过期时间

热门文章

  1. pairwise损失_triplet损失_提升精排模型的trick
  2. 局域网共享文件夹现在内存不足_局域网文件夹共享没问题,磁盘共享别人提示无权限?安排...
  3. 汇川技术小型PLC梯形图编程系列教程(三):PLC系统程序与用户程序介绍
  4. 井盖“吞人”事故频发,不可忽视智慧井盖
  5. linux socket全连接/半连接 队列
  6. jit和jitx区别_JIT和JIS
  7. 云客Drupal源码分析之导航菜单Navigation menus
  8. 逆势增长,资源分享整合平台淘赏云客获多家投资机构青睐
  9. 浅谈设计模式-迪米特法则
  10. 构建ecif系统核心逻辑