首页 后端开发 php教程 在 PHP 中将 PDF 文档转换为预览图像

在 PHP 中将 PDF 文档转换为预览图像

Feb 28, 2024 am 11:34 AM
php编程 后端开发

php小编苹果将为您介绍如何在PHP中将PDF文档转换为预览图像。PDF文档在网页上展示时,通常需要将其转换为图像格式以提供预览功能。通过PHP代码,我们可以利用第三方库实现PDF到图像的转换,从而方便用户在线预览PDF文档。本文将介绍具体的代码实现步骤,让您轻松实现PDF文档的预览功能。

预览为您的内容增加了一层安全性,因为图像上的内容无法复制和粘贴。 它们还提供其他我们不会详述的功能。

将 PDF 文档转换为预览图像的最简单方法是利用第三方库。 这些都是:

  1. Ghostscript
  2. ImageMagick

使用 php 和 Ghostscript 将 PDF 文档转换为预览图像

此命令行实用程序可在 windowslinuxMac 上使用。 按照以下步骤将 PDF 文档转换为预览图像。

  1. 要开始安装,请访问 Ghostscript 的官方网站,下载可执行文件,然后按照安装说明进行操作。
  2. 运行下面的代码来验证安装。
    <code>
    <code class="bash hljs"><span class="hljs-variable">$gs</span> --vers<strong class="keylink">io</strong>n
    </code></code>
    登录后复制
  3. 在您的 PDF 文件目录中,运行以下命令。 ```bash $gs -dSAFER -dBATCH -sDEVICE=jpeg

-dTextAlphaBits=4 -dGraphicsAlphaBits=4
-dFirstPage=1 -dLastPage=1 -r300
-sOutputFile=preview.jpg input.pdf

<code>
<code class="hljs php"><span class="hljs-number">4</span>. 上面的命令将在您的文档上创建起始页的图像。 我们将调用 `exec()` 函数来使用 PHP 中的命令,如下所示。
```php
<span class="hljs-meta"><?php</span>
exec( <span class="hljs-string">"ls -l"</span>, <span class="hljs-variable">$output_str</span>, <span class="hljs-variable">$return_val</span> );
<span class="hljs-keyword">foreach</span> ( <span class="hljs-variable">$output_str</span> <span class="hljs-keyword">as</span> <span class="hljs-variable">$line</span> ) {
<span class="hljs-keyword">echo</span> <span class="hljs-variable">$line</span> . <span class="hljs-string">"\n"</span>;
}
<span class="hljs-meta">?></span>
</code></code>
登录后复制

上面的代码会将所有目录和文件加载到控制台。 我们现在可以使用 PHP 代码来执行 Ghostscript 命令。

这是我们使用的 PHP 脚本。

<code>
<code class="php hljs"><span class="hljs-meta"><?php</span>

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">my_pdf</span> (<span class="hljs-params"> <span class="hljs-variable">$file</span> </span>) </span>{
<span class="hljs-variable">$file_info</span> = file_get_contents( <span class="hljs-variable">$file</span> );

<span class="hljs-keyword">if</span> ( preg_match( <span class="hljs-string">"/^%PDF-[0-1]\.[0-9]+/"</span>, <span class="hljs-variable">$file_info</span> ) ) {
<span class="hljs-keyword">return</span> <span class="hljs-literal">true</span>;
}
<span class="hljs-keyword">else</span> {
<span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
}
}
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">our_preview</span> (<span class="hljs-params"> <span class="hljs-variable">$file</span> </span>) </span>{
<span class="hljs-variable">$our_f<strong class="keylink">ORM</strong>at</span> = <span class="hljs-string">"png"</span>;
<span class="hljs-variable">$prvw_page</span> = <span class="hljs-string">"1"</span>;
<span class="hljs-variable">$resolution</span> = <span class="hljs-string">"300"</span>;
<span class="hljs-variable">$our_file</span> = <span class="hljs-string">"prvw.jpg"</span>;

<span class="hljs-variable">$command</span>= <span class="hljs-string">"gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE="</span> . <span class="hljs-variable">$our_format</span> . <span class="hljs-string">" "</span>;
<span class="hljs-variable">$command</span> .= <span class="hljs-string">"-dTextAlphaBits="</span> . <span class="hljs-string">" -dGraphicsAlphaBits="</span> . . <span class="hljs-string">" "</span>;
<span class="hljs-variable">$command</span> .= <span class="hljs-string">"-dFirstPage="</span> . <span class="hljs-variable">$prvw_page</span> . <span class="hljs-string">" -dLastPage="</span> . <span class="hljs-variable">$prvw_page</span> . <span class="hljs-string">" "</span>;
<span class="hljs-variable">$command</span> .= <span class="hljs-string">"-r"</span> . <span class="hljs-variable">$resolution</span> . <span class="hljs-string">" "</span>;
<span class="hljs-variable">$command</span> .= <span class="hljs-string">"-sOutputFile="</span> . <span class="hljs-variable">$our_file</span> . <span class="hljs-string">" &#39;"</span> . <span class="hljs-variable">$file</span> . <span class="hljs-string">"&#39;"</span>;
<span class="hljs-keyword">echo</span> <span class="hljs-string">"Running command...\n"</span>;
exec( <span class="hljs-variable">$command</span>, <span class="hljs-variable">$com_output</span>, <span class="hljs-variable">$ret_val</span> );
<span class="hljs-keyword">foreach</span>( <span class="hljs-variable">$com_output</span> <span class="hljs-keyword">as</span> <span class="hljs-variable">$line</span> ) {
<span class="hljs-keyword">echo</span> <span class="hljs-variable">$line</span> . <span class="hljs-string">"\n"</span>;
}
<span class="hljs-keyword">if</span> ( !<span class="hljs-variable">$ret_val</span> ) {
<span class="hljs-keyword">echo</span> <span class="hljs-string">"Preview created !!\n"</span>;
}
<span class="hljs-keyword">else</span> {
<span class="hljs-keyword">echo</span> <span class="hljs-string">"Error while creating.\n"</span>;
}
}
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">__m<strong class="keylink">ai</strong>n__</span>() </span>{
<span class="hljs-keyword">global</span> <span class="hljs-variable">$arg</span>;
<span class="hljs-variable">$inp_file</span> = <span class="hljs-variable">$arg</span>[<span class="hljs-number">1</span>];

<span class="hljs-keyword">if</span> ( my_pdf( <span class="hljs-variable">$inp_file</span> ) ) {
<span class="hljs-comment">// Preview for the pdf</span>
create_preview( <span class="hljs-variable">$inp_file</span> );
}
<span class="hljs-keyword">else</span> {
<span class="hljs-keyword">echo</span> <span class="hljs-string">"Thefile "</span> . <span class="hljs-variable">$inp_file</span> . <span class="hljs-string">" is not a valid PDF document.\n"</span>;
}
}
__main__();
<span class="hljs-meta">?></span>
</code></code>
登录后复制

代码执行从 _main_() 函数开始,它在命令行上获取 PDF 文件并验证其有效性。 如果文件有效,PHP 将执行 Ghostscript 命令。

输出:

<code>
<code class="bash hljs">$ php pdf_preview.php input.pdf
Executing <span class="hljs-built_in">command</span>...
GPL Ghostscript 9.22 (2022-08-05)
Copyright (C) 2022 Artifex Software, Inc.All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC <span class="hljs-keyword">for</span> details.
Processing pages 1 through 1.
Page 1
Preview created !!
</code></code>
登录后复制

使用 PHP 和 ImageMagick 将 PDF 文档转换为预览图像

  1. 首先将所有 ImageMagick 二进制文件安装到您的系统中。 运行以下命令以安装 ImageMagick 依赖项。

    <code>
    <code class="bash hljs"><span class="hljs-variable">$sudo</span> dnf install <strong class="keylink">GC</strong>c php-devel php-pear
    </code></code>
    登录后复制
  2. 运行以下命令以安装 ImageMagick。

    <code>
    <code class="bash hljs">$ sudo dnf install ImageMagick ImageMagick-devel
    </code></code>
    登录后复制
  3. 然后,让我们安装 PHP 包装器类。

    <code>
    <code class="bash hljs">$ sudo pecl install imagick
    $ sudo bash -c <span class="hljs-string">"echo "</span>extension=imagick.so<span class="hljs-string">" > /etc/php.d/imagick.ini"</span>
    </code></code>
    登录后复制
  4. 对于在 LAMP 服务器上使用它的用户,您必须重新启动 Apache 网络服务器。

    <code>
    <code class="bash hljs">$ sudo service <strong class="keylink">Http</strong>d restart
    </code></code>
    登录后复制
  5. 至此,我们需要的一切都准备好了。 我们现在可以使用早期的 PHP 脚本并编辑 create_preview() 函数。

    <code>
    <code class="php hljs"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">create_preview</span> (<span class="hljs-params"> <span class="hljs-variable">$file</span> </span>) </span>{
     <span class="hljs-variable">$output_format</span> = <span class="hljs-string">"jpeg"</span>;
     <span class="hljs-variable">$preview_page</span> = <span class="hljs-string">"1"</span>;
     <span class="hljs-variable">$resolution</span> = <span class="hljs-string">"300"</span>;
     <span class="hljs-variable">$output_file</span> = <span class="hljs-string">"imagick_preview.jpg"</span>;
    
     <span class="hljs-keyword">echo</span> <span class="hljs-string">"Fetching preview...\n"</span>;
     <span class="hljs-variable">$img_data</span> = <span class="hljs-keyword">new</span> Imagick();
     <span class="hljs-variable">$img_data</span>->setResolution( <span class="hljs-variable">$resolution</span>, <span class="hljs-variable">$resolution</span> );
     <span class="hljs-variable">$img_data</span>->readImage( <span class="hljs-variable">$file</span> . <span class="hljs-string">"["</span> . (<span class="hljs-variable">$preview_page</span> - <span class="hljs-number">1</span>) . <span class="hljs-string">"]"</span> );
     <span class="hljs-variable">$img_data</span>->setImageFormat( <span class="hljs-variable">$output_format</span> );
    
     file_put_contents( <span class="hljs-variable">$output_file</span>, <span class="hljs-variable">$img_data</span>, FILE_USE_INCLUDE_PATH );
    }
    </code></code>
    登录后复制

    输出结果:

    <code>
    <code class="bash hljs">$ php pdf_preview.php input.pdf
    Fetching preview...
    </code></code>
    登录后复制

这就是我们如何在 PHP 上从 PDF 文档创建预览图像。 这两种方法具有相似的基本功能。 您的选择取决于您的喜好。

以上是在 PHP 中将 PDF 文档转换为预览图像的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PHP将行格式化为 CSV 并写入文件指针 PHP将行格式化为 CSV 并写入文件指针 Mar 22, 2024 am 09:00 AM

这篇文章将为大家详细讲解有关PHP将行格式化为CSV并写入文件指针,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。将行格式化为CSV并写入文件指针步骤1:打开文件指针$file=fopen("path/to/file.csv","w");步骤2:将行转换为CSV字符串使用fputcsv()函数将行转换为CSV字符串。该函数接受以下参数:$file:文件指针$fields:作为数组的CSV字段$delimiter:字段分隔符(可选)$enclosure:字段引号(

PHP改变当前的 umask PHP改变当前的 umask Mar 22, 2024 am 08:41 AM

这篇文章将为大家详细讲解有关PHP改变当前的umask,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP更改当前的umask概述umask是一个用于设置新创建的文件和目录的默认文件权限的php函数。它接受一个参数,这是一个八进制数字,表示要阻止的权限。例如,要阻止对新创建的文件进行写入权限,可以使用002。更改umask的方法有两种方法可以更改PHP中的当前umask:使用umask()函数:umask()函数直接更改当前umask。其语法为:intumas

PHP建立一个具有唯一文件名的文件 PHP建立一个具有唯一文件名的文件 Mar 21, 2024 am 11:22 AM

这篇文章将为大家详细讲解有关PHP建立一个具有唯一文件名的文件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在PHP中创建唯一文件名的文件简介在php中创建具有唯一文件名的文件对于组织和管理文件系统至关重要。唯一文件名确保不会覆盖现有文件,并便于查找和检索特定文件。本指南将介绍在PHP中生成唯一文件名的几种方法。方法1:使用uniqid()函数uniqid()函数生成一个基于当前时间和微秒的唯一字符串。此字符串可以作为文件名的基础。

PHP计算文件的 MD5 散列 PHP计算文件的 MD5 散列 Mar 21, 2024 pm 01:42 PM

这篇文章将为大家详细讲解有关PHP计算文件的MD5散列,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP计算文件的MD5散列MD5(MessageDigest5)是一种单向加密算法,可将任意长度的消息转换为固定长度的128位哈希值。它广泛用于确保文件完整性、验证数据真实性和创建数字签名。在PHP中计算文件的MD5散列php提供了多种方法来计算文件的MD5散列:使用md5_file()函数md5_file()函数直接计算文件的MD5哈希值,返回一个32个字符的

PHP返回一个键值翻转后的数组 PHP返回一个键值翻转后的数组 Mar 21, 2024 pm 02:10 PM

这篇文章将为大家详细讲解有关PHP返回一个键值翻转后的数组,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP键值翻转数组键值翻转是一种对数组进行的操作,它将数组中的键和值进行交换,生成一个新的数组,其中原始键作为值,原始值作为键。实现方法在php中,可以通过以下方法对数组进行键值翻转:array_flip()函数:array_flip()函数专门用于键值翻转操作。它接收一个数组作为参数,并返回一个新的数组,其中键和值已交换。$original_array=[

PHP将文件截断到给定的长度 PHP将文件截断到给定的长度 Mar 21, 2024 am 11:42 AM

这篇文章将为大家详细讲解有关PHP将文件截断到给定的长度,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP文件截断简介php中的file_put_contents()函数可用于将文件截断到指定长度。截断是指删除文件末尾的部分内容,从而缩短文件长度。语法file_put_contents($filename,$data,SEEK_SET,$offset);$filename:要截断的文件路径。$data:要写入文件的空字符串。SEEK_SET:指定为文件开始处

PHP判断某个数组中是否存在指定的key PHP判断某个数组中是否存在指定的key Mar 21, 2024 pm 09:21 PM

这篇文章将为大家详细讲解有关PHP判断某个数组中是否存在指定的key,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP判断某个数组中是否存在指定的key:在php中,判断某个数组中是否存在指定的key的方法有多种:1.使用isset()函数:isset($array["key"])该函数返回布尔值,如果指定的key存在,则返回true,否则返回false。2.使用array_key_exists()函数:array_key_exists("key",$arr

PHP返回上一个 MySQL 操作中的错误信息的数字编码 PHP返回上一个 MySQL 操作中的错误信息的数字编码 Mar 22, 2024 pm 12:31 PM

这篇文章将为大家详细讲解有关PHP返回上一个Mysql操作中的错误信息的数字编码,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。利用PHP返回MySQL错误信息数字编码引言在处理mysql查询时,可能会遇到错误。为了有效处理这些错误,了解错误信息数字编码至关重要。本文将指导您使用php获取Mysql错误信息数字编码。获取错误信息数字编码的方法1.mysqli_errno()mysqli_errno()函数返回当前MySQL连接的最近错误号码。语法如下:$erro

See all articles