php图片合并成图片、合并成pdf
之前做过一个通过imagick扩展实现pdf转图片的例子,对图片处理有些印象,这次碰到的是多图转PDF,使用场景:ppt转成多张图片后,按照需求重组成新的有序图组,并输出pdf。
前半截步骤暂时不考虑通过程序实现(ppt拆分成多图),这次主要实现后面的步骤:多图重组合并成pdf。
然后就搜到了这篇教程:php图片合并成图片、合并成pdf。这篇教程里展示了两个输出途径,一个是输出一张图片,另一个是输出pdf。输出图片的方法都比较熟悉,是基于php自带的gd库的一些方法实现的。后面的方法是这次的目标。它使用了一个叫html2pdf的项目,其自身又有其他的一些依赖库,如tcpdf,所以需要借助composer进行安装。
项目根目录
composer require spipu/html2pdf
安装说明:How to Install Html2Pdf - github.com
demo
require __DIR__.'/vendor/autoload.php';
use Spipu\Html2Pdf\Html2Pdf;
$html2pdf = new Html2Pdf();
$html2pdf->writeHTML('<h1>HelloWorld</h1>This is my first test');
$html2pdf->output();
具体实现
输出文件权限不够,所以直接输出到浏览器,然后另存为就好
ob_start();
$arr = array(
"http://i3.article.fd.zol-img.com.cn/g5/M00/09/0C/ChMkJlfyfn2IERdDAAHQxdb3mPsAAWkHAMIknsAAdDd449.jpg",
"http://i1.article.fd.zol-img.com.cn/g5/M00/09/0C/ChMkJlfyfn6IDN3UAAGMCyjcYzAAAWkHAMKq1MAAYwj981.jpg",
"http://i0.article.fd.zol-img.com.cn/g5/M00/09/0C/ChMkJ1fyfn6IG8EYAAFskogJlD8AAWkHAMMN3YAAWyq856.jpg",
"http://i1.article.fd.zol-img.com.cn/g5/M00/09/0C/ChMkJ1fyfn-Ia45QAAJXIvoesz0AAWkHAMOEogAAlc6771.jpg",
"http://i3.article.fd.zol-img.com.cn/g5/M00/09/0C/ChMkJ1fyfn-INmzaAAFgdWkXDdcAAWkHAMQacIAAWCN493.jpg",
"http://i3.article.fd.zol-img.com.cn/g5/M00/09/0C/ChMkJlfyfoCISLJGAAHzBo-1gFEAAWkHAMRyk8AAfMe709.jpg",
"http://i1.article.fd.zol-img.com.cn/g5/M00/09/0C/ChMkJlfyfoGIapnCAAFvZFFz-uwAAWkHAMTvW0AAW98471.jpg",
"http://i3.article.fd.zol-img.com.cn/g5/M00/09/0C/ChMkJlfyfoGIL68jAAIcxWunA8kAAWkHAMWm_AAAhzd973.jpg",
"http://i0.article.fd.zol-img.com.cn/g5/M00/09/0C/ChMkJ1fyfoGIV8MLAAFZzELLOKgAAWkHAMVQgwAAVnk100.jpg",
"http://i2.article.fd.zol-img.com.cn/g5/M00/09/0C/ChMkJlfyfoKIEzMNAAF6waw8hHcAAWkHAMZVSQAAXrZ458.jpg",
"http://i4.article.fd.zol-img.com.cn/g5/M00/09/0C/ChMkJlfyfoOIQG1XAAI5eKk8DHcAAWkHAMiWVoAAjmQ624.jpg",
"http://i1.article.fd.zol-img.com.cn/g5/M00/09/0C/ChMkJ1fyfoOIdkkaAAIpl9rgCREAAWkHAMsnogAAimv191.jpg",
"http://i3.article.fd.zol-img.com.cn/g5/M00/09/0C/ChMkJ1fyfoOIRGmRAAG00aVhnlEAAWkHAMgpHEAAbTp099.jpg",
"http://i3.article.fd.zol-img.com.cn/g5/M00/09/0C/ChMkJlfyfoWIQO6sAAG3EJBtOCwAAWkHAM2RNsAAbco983.jpg",
"http://i2.article.fd.zol-img.com.cn/g5/M00/09/0C/ChMkJ1fyfoWIPGVRAAJygNzB8OkAAWkHAM4G1kAAnKY482.jpg",
"http://i2.article.fd.zol-img.com.cn/g5/M00/09/0C/ChMkJ1fyfoaIBIFOAAKVc2qOlY8AAWkHAM6jfEAApWL812.jpg",
"http://i0.article.fd.zol-img.com.cn/g5/M00/09/0C/ChMkJlfyfoeIL4ZPAAKKqAt2c1IAAWkHAM9I3wAAorA456.jpg",
"http://i1.article.fd.zol-img.com.cn/g5/M00/09/0C/ChMkJ1fyfoiICob2AAKn89yMyrIAAWkHAM__vcAAqgL287.jpg",
"http://i1.article.fd.zol-img.com.cn/g5/M00/09/0C/ChMkJlfyfoiIHVHnAAKGDOSadw0AAWkHANCy_oAAoYk417.jpg",
"http://i3.article.fd.zol-img.com.cn/g5/M00/09/0C/ChMkJ1fyfomIfYZPAAHdVx-ZrvsAAWkHANFUh4AAd1v749.jpg"
);
foreach($arr as $k=>$v){
echo '<page orientation="paysage"><img src="'.$v.'" style="float:left;vertical-align:middle;"></page>';
}
$content = ob_get_clean();
require __DIR__.'/vendor/autoload.php';
use Spipu\Html2Pdf\Html2Pdf;
use Spipu\Html2Pdf\Exception\Html2PdfException;
try
{
$html2pdf = new Html2Pdf('P', 'A4', 'fr');
$html2pdf->pdf->SetDisplayMode('fullpage');
$html2pdf->writeHTML($content);
// $html2pdf->output('dingling20161013.pdf','F');
$html2pdf->output('dingling20161013.pdf');
} catch(Html2PdfException $e) {
echo $e;
exit;
}
改写成ci library
把vendor直接改成imgs2pdf放到library目录下,再添加一个这样内容的Imgs2pdf_init.php引入文件
class Imgs2pdf_init
{
private $ci;
public function __construct()
{
$this->ci =& get_instance();
require_once 'imgs2pdf/autoload.php';
}
}
ci 调用
$this->load->library('imgs2pdf_init');
use Spipu\Html2Pdf\Html2Pdf;
$html2pdf = new Html2Pdf();
or
$html2pdf = new Spipu\Html2Pdf\Html2Pdf();
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭