使用wkhtmltopdf+pdftk 实现多个不同宽高pdf合成一个pdf
- wkhtmltopdf
简单方便且强大的一个导出PDF工具
https://github.com/mreiferson/php-wkhtmltox - 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相关推荐
- css宽高自适应布局,实现Sticky Footer的三种布局方式
宽度自适应布局: 1.使用场景: 一侧(左侧或者右侧)为固定的导航或者菜单栏,另一侧将会随着浏览器的缩放而自适应改变其大小.这种布局结构可用于顶层布局结构亦可用于某个局部功能块,常见于各种web系统( ...
- Java BufferImage图片处理(获取宽高、图片截取、转换灰度图)
Java BufferImage图片处理(获取宽高.截取.转换灰度图) 1. 效果图 2. 源码 参考 这篇博客将介绍如何使用Java读取图片为byte[]数组,或者BufferedImage及互相转 ...
- 用v-for循环动态定位坐标显示元素,并遍历元素的left和top坐标位置(只需要用到元素的宽高、索引、每行显示数量)
v-for="(index,$i) in total" :key="$i":style="{left:`${itemWidth*((index-1)% ...
- 【进阶版九宫格背景图片】如何仅仅依靠background的几个属性组合搭配出酷炫的背景图片效果,并自适应任何宽高效果?
如果你要有透明度效果的背景图请移步https://blog.csdn.net/qq_37860634/article/details/119591991 这是我们最终想要达到的效果,并且支持任意宽高缩 ...
- js中的各种宽高以及位置总结
在javascript中操作dom节点让其运动的时候,常常会涉及到各种宽高以及位置坐标等概念,如果不能很好地理解这些属性所代表的意义,就不能理解js的运动原理,同时,由于这些属性概念较多,加上浏览器之 ...
- OpenCV图像坐标系与行列宽高的关系
这篇文章挺好 OpenCV图像坐标系与行列宽高的关系 图片坐标系,与从小到大见到的xy坐标系,x轴方向相同,只是y轴方向相反.
- JavaScript获取浏览器、元素、屏幕的宽高尺寸
版权声明 转载请告知并注明来源作者 作者:唐金健 网络昵称:御焱 掘金知乎思否专栏:优雅的前端 前言 有时候在获取浏览器.元素.屏幕的尺寸,傻傻分不清.为了让自己清晰认识,能够快速确定自己需要哪个属性 ...
- 页面宽高,窗口宽高,元素宽高,元素位置,页面滚动距离
注:以下内容只适用于chrome 页面宽高: document.body.clientWidth/Height(不包括margin) document.body.offsetWidth/Height( ...
- H5 canvas的 width、height 与style中宽高的区别
Canvas 的width height属性 1.当使用width height属性时,显示正常不会被拉伸:如下 <canvas id="mycanvas" width=&q ...
最新文章
- 不同编程语言之间的具体实现对比
- 画一个空心圆_用SolidWorks画一个空心挂钩,这种画法稍微有点麻烦
- freeRtos学习笔记 (5)事件组
- Python高阶函数用法
- java多线程并发控制_Java多线程与并发控制
- 【图解+全文】工信部关于印发“十四五”大数据产业发展规划的通知
- 金蝶K3退出远程桌面后,客户端无法登陆
- 学习之路十四:客户端调用WCF服务的几种方法小议
- 《算法分析与设计》 第一章 算法设计基础 基本知识点
- 计算机辅助三维设计大纲,《电脑辅助三维设计》课程教学大纲.doc
- 字符编码-- Unicode(1991年)
- 利用讯飞语音识别技术开发离线语音控制系统(Windows平台)
- ET和LT的原理和区别
- 【Angular/TS】一文弄懂安全导航操作符(?.)、非空断言操作符/可选链(?.) 、空值合并运算符
- c++基础知识的学习--函数探幽
- 从零开始的unity2017笔记【2D】(【二】角色动画)
- bootstrap网格布局自适应问题
- Hive面试题系列第三题-用户留存问题
- Python中将科学计数法(或以e为底的自然对数)字符串转换为float浮点数
- MySql数据库中,表字段新增,修改,删除