php 将pdf生成图片,php 将pdf转成图片且将图片拼接
说明:
1.pdf转图片通过安装php扩展imagick实现。
2.由于windows扩展安装的一系列问题,建议在linux环境开发,windows大伙可以尝试安装。
3.为Centos 安装ImageMagick imagick for php步骤。ImageMagick是一套软件系列,主要用于图片的创建、编辑以及转换等 (安装方式有多种,本文只介绍一种安装方式)
(一)安装步骤:
1. 下载安装ImageMagick
wget ftp://mirror.aarnet.edu.au/pub/imagemagick/ImageMagick-6.6.8-10.tar.gz
tar -xzvf ImageMagick-6.6.8-10.tar.gz
./configure --prefix=/usr/local/imagemagick
make
make install
2.下载安装Imagick
地址:http://pecl.php.net/package/imagick
wget http://pecl.php.net/get/imagick-3.1.0RC1.tgz
tar -xzvf imagick-3.1.0RC1
phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-imagick=/usr/local/imagemagick
make
make install
3.手动配置php.ini
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
Installing header files: /usr/local/php/include/php/
生成imagick.so到/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
至此,php扩展安装完成。
(二)使用方法
/**
* PDF2PNG
* @param $pdf 待处理的PDF文件
* @param $path 待保存的图片路径
* @param $page 待导出的页面 -1为全部 0为第一页 1为第二页
* @return 保存好的图片路径和文件名
* 注:此处为坑 对于Imagick中的$pdf路径 和$path路径来说, php版本为5+ 可以使用相对路径。php7+版本必须使用绝对路径。所以,建议大伙使用绝对路径。
*/
function pdf2png($pdf,$path,$page=-1)
{
if(!extension_loaded('imagick'))
{
return false;
}
if(!file_exists($pdf))
{
return false;
}
if(!is_readable($pdf))
{
return false;
}
$im = new Imagick();
$im->setResolution(150,150);
$im->setCompressionQuality(100);
if($page==-1)
$im->readImage($pdf);
else
$im->readImage($pdf."[".$page."]");
foreach ($im as $Key => $Var)
{
$Var->setImageFormat('png');
$filename = $path. md5($Key.time()).'.png';
if($Var->writeImage($filename) == true)
{
$Return[] = $filename;
}
}
//返回转化图片数组,由于pdf可能多页,此处返回二维数组。
return $Return;
}
/**
* Spliceimg
* @param array $imgs pdf转化png 路径
* @param string $path 待保存的图片路径
* @return string 将多个图片拼接为成图的路径
* 注:多页的pdf转化为图片后拼接方法
*/
function Spliceimg($imgs = array(),$img_path = '')
{
//自定义宽度
$width = 1230;
//获取总高度
$pic_tall = 0;
foreach ($imgs as $key => $value) {
$info = getimagesize($value);
$pic_tall += $width/$info[0]*$info[1];
}
// 创建长图
$temp = imagecreatetruecolor($width,$pic_tall);
//分配一个白色底色
$color = imagecolorAllocate($temp,255,255,255);
imagefill($temp,0,0,$color);
$target_img = $temp;
$source = array();
foreach ($imgs as $k => $v) {
$source[$k]['source'] = Imagecreatefrompng($v);
$source[$k]['size'] = getimagesize($v);
}
$num = 1;
$tmp = 1;
$tmpy = 2; //图片之间的间距
$count = count($imgs);
for ($i = 0; $i < $count; $i++) {
imagecopy($target_img, $source[$i]['source'], $tmp, $tmpy, 0, 0, $source[$i]['size'][0], $source[$i]['size'][1]);
$tmpy = $tmpy + $source[$i]['size'][1];
//释放资源内存
imagedestroy($source[$i]['source']);
}
$returnfile = $img_path.date('Y-m-d');
if (!file_exists($returnfile))
{
if (!make_dir($returnfile))
{
/* 创建目录失败 */
return false;
}
}
$return_imgpath = $returnfile.'/'.md5(time().$pic_tall.'pdftopng').'.png';
imagepng($target_img,$return_imgpath);
return $return_imgpath;
}
/**
* make_dir
* @param string $folder 生成目录地址
* 注:生成目录方法
*/
function make_dir($folder)
{
$reval = false;
if (!file_exists($folder))
{
/* 如果目录不存在则尝试创建该目录 */
@umask(0);
/* 将目录路径拆分成数组 */
preg_match_all('/([^\/]*)\/?/i', $folder, $atmp);
/* 如果第一个字符为/则当作物理路径处理 */
$base = ($atmp[0][0] == '/') ? '/' : '';
/* 遍历包含路径信息的数组 */
foreach ($atmp[1] AS $val)
{
if ('' != $val)
{
$base .= $val;
if ('..' == $val || '.' == $val)
{
/* 如果目录为.或者..则直接补/继续下一个循环 */
$base .= '/';
continue;
}
}
else
{
continue;
}
$base .= '/';
if (!file_exists($base))
{
/* 尝试创建目录,如果创建失败则继续循环 */
if (@mkdir(rtrim($base, '/'), 0777))
{
@chmod($base, 0777);
$reval = true;
}
}
}
}
else
{
/* 路径已经存在。返回该路径是不是一个目录 */
$reval = is_dir($folder);
}
clearstatcache();
return $reval;
}
调用方法,实现将pdf 转为图片 进而拼接图片的功能~over~
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
php 将pdf生成图片,php 将pdf转成图片且将图片拼接相关推荐
- 【精】【PDF链接转图片】- Java用pdfbox将PDF的URL转换并压缩成图片,解决“口口口”乱码问题
[业务场景]:做一个开电子发票的业务,中税返回我们一个pdf的url,这个url在web端是可以显示的,移动端:ios可以正常显示,安卓显示为是否要下载.产品邀请发票预览需让用户第一时间看到,不应该有 ...
- Android PDF原生实现 PDF阅读、PDF手势伸缩、PDF目录、PDF预览缩略图 PDF方案选择 google doc android-pdfview mupdf pdf.js x5
##1.背景 近期,公司希望实现安卓原生端的PDF功能,要求:高效.实用. 经过两天的调研.编码,实现了一个简单Demo,如上图所示. 关于安卓原生端的PDF功能实现,技术点还是很多的,为了咱们安卓开 ...
- 如何将PDF文件批量转换成图片格式
在我们的日常工作中文件转换是一件常见的日常工作,而PDF文件转换是每一个上班族必备的技能之一,比如讲PDF文件转换成图片格式.毫无疑问PDF格式给用户带来更好的阅读体验,PDF文件是一页一页的文件形式 ...
- ImageMagick之PDF转换成图片(image)
安装完ImageMagick之后,直接执行"magick convert f:\parseWord\tmp\testpdf.pdf f:\parseWord\tmp\testpdf.jpg& ...
- 程序显示文本框_python PDF转成图片小程序
你有没有遇到过这样一个需求:把一批PDF文件转存成图片,或者说把某一个文件夹内所有的pdf文件都转换成图片.PDF文件转存成图片格式有很多种方法,可以使用PDF编辑器或者上传到专门转格式的网站上.但是 ...
- html转换为pdf php,js实现html转成pdf
在项目开发的时候,我们偶尔或者是经常会遇到一些难题,关于用js吧html页面转换成pdf也是一个难题,意思是说相当于把整个页面截下来,然后保存成pdf. 其实,能够实现html转pdf的方法还是挺多的 ...
- c#中将pdf转换成图片(png,jpg....),无水印
一:需要引用的主键: using O2S.Components.PDFRender4NET; 二:主要逻辑: /// <summary>/// PDF文档所有页全部转换为图片/// < ...
- 使用icepdf将pdf首页内容转成图片
说明: 1.图片命名规则:给定的文件所属目录+给定的文件的名称+.+png,即同目录下同名称的png图片 2.基本业务: a.判断同目录下同名称的png图片是否存在,若已经存在直接return b.若 ...
- Pdf转成一张png或jpg图片
把Pdf文件转成一张png或jpg图片如下步骤: 1.下载第三方Pdf读取控件PDFFile. 2.如果想转成一张图片则用下面代码: <pre name="code" cla ...
最新文章
- 程序员面试题精选100题(04)-二元树中和为某一值的所有路径[数据结构]
- VS中怎样对C#项目进行单元测试
- 求区间不同数的个数 树状数组||莫队算法
- 【数字信号去噪】基于matlab小波软阈值+硬阈值+改进的阈值高斯脉冲信号去噪【含Matlab源码 1706期】
- Unix编程艺术-翻译-开篇
- idea下搭建vue开发环境
- 【2019-2020春学期】数据库作业18:第八章: 数据库编程(实验课大作业)
- html文件如何显示大纲视图,如何使用大纲视图生成章节目录
- python pandas合并多个excel,Python pandas实现excel工作表合并功能详解
- css设置字体颜色怎么设,css里面怎么设置字体颜色?
- 中病毒了文件夹变exe文件找到方法
- dubbo实战之四:管理控制台dubbo-admin
- 《刻意练习》读书分享
- 2021年7月电动汽车保有量,充电站数量
- OringPro 调整坐标轴
- 验证码论文概述-----中文篇
- 巨量引擎创意分类和创意标签使用技巧
- Java毕设项目户籍管理系统(java+VUE+Mybatis+Maven+Mysql)
- 力源信息是鸿蒙概念股吗,力源信息(300184)个股分析_牛叉诊股_同花顺财经
- 【Verilog七段译码器】
热门文章
- 无法开启 IE 开发者工具
- Ninth season twenty-first episode,Chandler and Monica may never have children??????
- 解决Vue启动报错 npm ERR! @1.0.0 dev: node build/dev-server.js
- 跨境电商细分领域的探索-扬帆际海
- linux 批量替换文件cp,Linux下批量修改文件名
- java gif等比例缩放_对gif动图进行缩放等处理(java)
- matlab根据根求多项式,matlab求解多项式的根
- 关于随机种子seed()的一点理解
- 数字信号处理(FIR滤波器的设计与原理及基础知识)
- Centos7配置 yum代理