pdf文件转图片

<?php 
/**
 * PDF2PNG
 * @param $pdf  待处理的PDF文件  
 * @param $path 待保存的图片路径
 * @param $page1 待导出的页面 -1为全部 0为第一页 1为第二页
 * @return      保存好的图片路径和文件名
 * 注:此处为坑 对于Imagick中的$pdf路径 和$path路径来说,   php版本为5+ 可以使用相对路径。php7+版本必须使用绝对路径。所以,建议大伙使用绝对路径。
 */
function pdf2png($pdf,$path,$page1=-1)
{
    if(!extension_loaded('imagick'))
    {
        echo '‘环境未安装imagick程序';
        return false;
    }
    if(!file_exists($pdf))
    {
        echo '要处理的PDF文件不存在';
        return false;
    }
    if(!is_readable($pdf))
    {
        echo '要处理的PDF文件权限不够';
        return false;
    }

    $im = new Imagick();
    $im->setResolution(150,150);
    $im->setCompressionQuality(100);
    if($page1==-1)
        $im->readImage($pdf);
    else
        $im->readImage($pdf."[".$page1."]");
    foreach ($im as $Key => $Var)
    {
        $Var->setImageFormat('png');
        $filename = $path;
        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;
}

 

转载于:https://www.cnblogs.com/zwtqf/p/11305983.html

uniapp 是一款基于 Vue.js 的跨平台应用开发框架,可以帮助开发者快速地编写出适配多个平台的应用程序。如果需要将 pdf 文件换为图片格式,并且需要在 uniapp 项目中实现,可以考虑使用第三方库或者插件来实现这个功能。 实现 pdf 文件图片的功能,首先需要在 uniapp 项目中引入对应的插件或者库。可以搜索相关的 npm 包或者 GitHub 上的库,找到一个合适的库来处理 pdf 文件换的功能。一旦找到合适的库,就可以通过 npm 安装并引入到项目中。 一般来说,pdf 文件图片格式的功能需要调用相关的接口来实现。在 uniapp 中,可以利用 Vue.js 提供的生命周期函数和方法,来在合适的时机调用第三方库的接口进行 pdf 图片的处理。比如在页面加载完成后调用相应的方法,将 pdf 文件换为图片格式并显示在页面上。 需要注意的是,在进行 pdf 图片的过程中,可能会涉及到一些异步操作,需要合理处理异步回调,确保换过程能够正确执行并且能够将换后的图片正确显示出来。同时,还需要处理一些异常情况,比如 pdf 文件不存在或者换失败的情况,确保程序能够稳定地运行。 总体来说,在 uniapp 项目中实现 pdf 文件图片格式的功能,需要找到合适的第三方库或者插件,并且合理利用 Vue.js 提供的功能来调用相应的接口实现换功能。处理好异步操作和异常情况,就可以在 uniapp 项目中成功实现 pdf 文件图片格式的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值