#php把pdf文件转成图片#

本地环境
系统:win11 64位
环境:phpStudy
PHP版本:8.0.2
矿建:laravel


配置扩展
一、安装imageMagick
下载地址:https://imagemagick.org/script/download.php
安装版本:ImageMagick-最新版本-Q16-HDRI-x64-dll
配置环境变量:我的电脑-属性-高级系统设置-环境变量-系统变量-path-编辑-新建-引入安装路径
二、安装ghostscript
下载地址:https://www.ghostscript.com/releases/gsdnld.html
安装版本:gs926w64.exe
配置环境变量:我的电脑-属性-高级系统设置-环境变量-系统变量-path-编辑-新建-引入安装路径\bin
三、下载php_imagick.dll扩展
下载地址:https://pecl.php.net/package/imagick/3.4.4/windows
安装版本:php_imagick-3.4.4-{当前使用的php版本}-nts-vc15-x64
意事项:选择与自身PHP版本相同的下载,如果phpinfo的Thread Safety是disabied选择nts版本,否则选ts版本

四、开启php_imagick.dll扩展
1.把php_imagick.dll文件复制到 ext 目录下(phpstudy-属性-打开 文件所在的位置 -> 返回上一层 -Extensions- php-php8.0.2nts ->ext)
2.把其他.dll文件复制在php根目录下(phpstudy-属性-打开 文件所在的位置 -> 返回上一层 -Extensions- php-php8.0.2nts 
3.开启扩展(phpStudy-网站-选择开发的项目-管理-php扩展-勾选imagick)
五、实现代码
1:前端代码

<!DOCTYPE html>
<html>
   <head>
      <title>注册画面</title>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <!-- 引入 Bootstrap -->

 
      <!-- HTML5 Shiv 和 Respond.js 用于让 IE8 支持 HTML5元素和媒体查询 -->
      <!-- 注意: 如果通过 file://  引入 Respond.js 文件,则该文件无法起效果 -->
      <!--[if lt IE 9]>

      <![endif]-->
      <style>

      </style>
   </head>
   <body>
      <div id="main">
      	<form class="form-horizontal" role="form"  enctype="multipart/form-data"  action="/test/savepdf"  method="POST">
            <div class="form-group">
                <div class="col-sm-offset-3 col-sm-9">
                    <input type="file" name="pdffile">
                </div>
            </div>
					<div class="form-group">
						<div class="col-sm-offset-3 col-sm-9">
                            <input type="submit"  value="保存"  class="btn btn-primary btn-group-justified">

						</div>
					</div>
				</form>
      </div>

      <script>
      	$(function() {


      	})
      </script>
   </body>
</html>
<script>

</script>

2:后端代码

Route::any('test/savepdf', 'Teacher\TestController@savePdf');
public function  savePdf(Request $request ){


        $rootPath = storage_path('app/public');

        if ($request->hasFile('pdffile')) {
            $file = $request->file('pdffile');

            $extension = $file ->getClientOriginalExtension() ;

            if(strtolower($extension) != "pdf"){
                return 0;
            }

            $filename =  date("YmdHis").'.'.$extension;
            $path = $file->storeAs('pdfs', $filename, 'public');
            $pdfFilePath =$rootPath."/".$path;

            try{
                if(!extension_loaded('imagick')){
                    return 1;
                }
                if(!file_exists($pdfFilePath)){
                    return 2;
                }


//                $outputImage = $rootPath.'/output.png'; // 输出图片文件名
//                // 创建Imagick对象
//                $imagick = new \Imagick();
//                // 从PDF文件读取数据
//                $imagick->readImage($pdfFilePath . '[0]'); // 读取第一页,索引从0开始
//                //$imagick->readImage($pdfFilePath); // 读取第一页,索引从0开始
//
//                // 设置图片格式和质量
//                $imagick->setImageFormat('png');
//                $imagick->setImageCompressionQuality(100);
//                // 写入图片文件
//                $imagick->writeImage($outputImage);
//                 // 清理资源
//                $imagick->clear();
//                $imagick->destroy();


                $IM = new \imagick();
                $IM->setResolution(120,120);
                $IM->setCompressionQuality(100);
                $IM->readImage($pdfFilePath);

                foreach ($IM as $Key => $Var){
                    $Var->setImageFormat('png');
                    $Filename = $rootPath.'/'.$filename.'_pdfpng_'.$Key.'.png';
                    if($Var->writeImage($Filename) == true){
                        $Return[] = $Filename;
                    }
                }
            }catch(\Exception $e){

                die($e->getMessage());
                return $e->getMessage();
            }


        }



        foreach ($Return as $k=>$v){
            $item = str_replace($rootPath,"",$v) ;
            $Return[$k] = asset("storage".$item);
        }


        print_r($Return);

        die("error") ;

    }

3:成功,如图pdf转成一张一张图片

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用一些库和工具来将 PDF 文件转换为图片,并处理其中的非 UTF-8 内容。一个常用的 PHP 库是 Imagick,它可以用来处理图像和 PDF 文件。 首先,确保你已经安装了 Imagick 扩展。然后,你可以按照以下步骤来进行转换: 1. 加载 PDF 文件并创建一个 Imagick 对象: ```php $pdfPath = 'path/to/your/pdf/file.pdf'; $imagick = new Imagick(); $imagick->readImage($pdfPath); ``` 2. 设置 Imagick 对象的一些参数,如分辨率、颜色空间等: ```php $imagick->setResolution(300, 300); // 设置分辨率,可根据需要调整 $imagick->setColorspace(Imagick::COLORSPACE_RGB); // 设置颜色空间,根据需要选择 ``` 3. 遍历 PDF 的每一页,并将其转换为图片: ```php foreach ($imagick as $pageNumber => $page) { // 设置页码,从 0 开始 $page->setIteratorIndex($pageNumber); // 将 PDF 页面转换为图片 $page->setImageFormat('png'); // 可以选择其他图片格式如JPEG // 处理非 UTF-8 内容(如果需要) // $pageContent = $page->getImageBlob(); // 进行相应的处理,如字符编码转换 // 保存图片 $imagePath = 'path/to/save/image/page_' . ($pageNumber + 1) . '.png'; // 图片保存路径,根据需要调整 $page->writeImage($imagePath); } ``` 在上述代码中,你可以根据需要在处理非 UTF-8 内容时进行相应的字符编码转换操作。 请注意,PDF 转换为图片可能会涉及到一些排版和格式的变化,因此转换后的图片可能与原始 PDF 有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值