1. wkhtmltopdf
    简单方便且强大的一个导出PDF工具
    https://github.com/mreiferson/php-wkhtmltox
  2. pdftk
    强大的pdf文件操作工具
    http://www.pdflabs.com/docs/install-pdftk/
    为了实现不同格式的pdf共存,我想到一个笨办法~,不过还挺有用,先使用wkhtmktopdf把目标html页面导成pdf,当所有的pdf都导出来后,在用pdftk把所有的pdf合成一个pdf输出。
// An highlighted blockpublic function downpdf($html){ob_start();file_put_contents("first.html", $html['first']);file_put_contents("second.html", $html['second']);file_put_contents("three.html", $html['three']);file_put_contents("four.html", $html['four']);ob_end_clean();while (!file_exists("first.pdf") || !file_exists("second.pdf")|| !file_exists("three.pdf")|| !file_exists("four.pdf")){if(!file_exists("first.pdf")){shell_exec("wkhtmltopdf  --page-size A4 --margin-top 20mm  first.html  first.pdf");}else if(!file_exists("second.pdf")){shell_exec("wkhtmltopdf --margin-top 20mm  --page-width 420mm --page-height 297mm second.html  second.pdf");}else if(!file_exists("three.pdf")){shell_exec("wkhtmltopdf  --margin-top 20mm --page-size A4 three.html  three.pdf");}else{shell_exec("wkhtmltopdf --margin-top 20mm --page-width 420mm --page-height 297mm four.html  four.pdf");}}unlink("first.html");unlink("second.html");unlink("three.html");unlink("four.html");if(file_exists("first.pdf") && file_exists("second.pdf") && file_exists("three.pdf") && file_exists("four.pdf")){$result = shell_exec("pdftk first.pdf second.pdf three.pdf four.pdf  cat output SBCX.pdf");header("Content-type:application/pdf");header("Content-Disposition:attachment;filename=SBCX.pdf");echo file_get_contents("SBCX.pdf");unlink("first.pdf");unlink("second.pdf");unlink("three.pdf");unlink("four.pdf");unlink("SBCX.pdf");}else{$this->error('异常','',500);exit;}}

使用wkhtmltopdf+pdftk 实现多个不同宽高pdf合成一个pdf相关推荐

  1. css宽高自适应布局,实现Sticky Footer的三种布局方式

    宽度自适应布局: 1.使用场景: 一侧(左侧或者右侧)为固定的导航或者菜单栏,另一侧将会随着浏览器的缩放而自适应改变其大小.这种布局结构可用于顶层布局结构亦可用于某个局部功能块,常见于各种web系统( ...

  2. Java BufferImage图片处理(获取宽高、图片截取、转换灰度图)

    Java BufferImage图片处理(获取宽高.截取.转换灰度图) 1. 效果图 2. 源码 参考 这篇博客将介绍如何使用Java读取图片为byte[]数组,或者BufferedImage及互相转 ...

  3. 用v-for循环动态定位坐标显示元素,并遍历元素的left和top坐标位置(只需要用到元素的宽高、索引、每行显示数量)

    v-for="(index,$i) in total" :key="$i":style="{left:`${itemWidth*((index-1)% ...

  4. 【进阶版九宫格背景图片】如何仅仅依靠background的几个属性组合搭配出酷炫的背景图片效果,并自适应任何宽高效果?

    如果你要有透明度效果的背景图请移步https://blog.csdn.net/qq_37860634/article/details/119591991 这是我们最终想要达到的效果,并且支持任意宽高缩 ...

  5. js中的各种宽高以及位置总结

    在javascript中操作dom节点让其运动的时候,常常会涉及到各种宽高以及位置坐标等概念,如果不能很好地理解这些属性所代表的意义,就不能理解js的运动原理,同时,由于这些属性概念较多,加上浏览器之 ...

  6. OpenCV图像坐标系与行列宽高的关系

    这篇文章挺好    OpenCV图像坐标系与行列宽高的关系 图片坐标系,与从小到大见到的xy坐标系,x轴方向相同,只是y轴方向相反.

  7. JavaScript获取浏览器、元素、屏幕的宽高尺寸

    版权声明 转载请告知并注明来源作者 作者:唐金健 网络昵称:御焱 掘金知乎思否专栏:优雅的前端 前言 有时候在获取浏览器.元素.屏幕的尺寸,傻傻分不清.为了让自己清晰认识,能够快速确定自己需要哪个属性 ...

  8. 页面宽高,窗口宽高,元素宽高,元素位置,页面滚动距离

    注:以下内容只适用于chrome 页面宽高: document.body.clientWidth/Height(不包括margin) document.body.offsetWidth/Height( ...

  9. H5 canvas的 width、height 与style中宽高的区别

    Canvas 的width height属性 1.当使用width height属性时,显示正常不会被拉伸:如下 <canvas id="mycanvas" width=&q ...

最新文章

  1. 不同编程语言之间的具体实现对比
  2. 画一个空心圆_用SolidWorks画一个空心挂钩,这种画法稍微有点麻烦
  3. freeRtos学习笔记 (5)事件组
  4. Python高阶函数用法
  5. java多线程并发控制_Java多线程与并发控制
  6. 【图解+全文】工信部关于印发“十四五”大数据产业发展规划的通知
  7. 金蝶K3退出远程桌面后,客户端无法登陆
  8. 学习之路十四:客户端调用WCF服务的几种方法小议
  9. 《算法分析与设计》 第一章 算法设计基础 基本知识点
  10. 计算机辅助三维设计大纲,《电脑辅助三维设计》课程教学大纲.doc
  11. 字符编码-- Unicode(1991年)
  12. 利用讯飞语音识别技术开发离线语音控制系统(Windows平台)
  13. ET和LT的原理和区别
  14. 【Angular/TS】一文弄懂安全导航操作符(?.)、非空断言操作符/可选链(?.) 、空值合并运算符
  15. c++基础知识的学习--函数探幽
  16. 从零开始的unity2017笔记【2D】(【二】角色动画)
  17. bootstrap网格布局自适应问题
  18. Hive面试题系列第三题-用户留存问题
  19. Python中将科学计数法(或以e为底的自然对数)字符串转换为float浮点数
  20. MySql数据库中,表字段新增,修改,删除

热门文章

  1. PHP图片转base64
  2. “网络状态变成一条虚线”的解决办法(右下角网络图标突然消失情况)
  3. 2019年上半年网络工程师考试下午试题分析
  4. 佳能Canon PIXMA iP6000D 打印机驱动
  5. windows缺少msvcp120.dll解决方案
  6. 智能家居Homekit系列一智能触摸开关
  7. 实现财务自由的七大步骤
  8. 【百度网站怎么推广】引流推广在百度贴吧要怎么做?
  9. php 去重数组,php 数组 去重
  10. 串扰几种常见措施的效果及差异