php小编苹果将为您介绍如何在PHP中将PDF文档转换为预览图像。PDF文档在网页上展示时,通常需要将其转换为图像格式以提供预览功能。通过PHP代码,我们可以利用第三方库实现PDF到图像的转换,从而方便用户在线预览PDF文档。本文将介绍具体的代码实现步骤,让您轻松实现PDF文档的预览功能。
预览为您的内容增加了一层安全性,因为图像上的内容无法复制和粘贴。 它们还提供其他我们不会详述的功能。
将 PDF 文档转换为预览图像的最简单方法是利用第三方库。 这些都是:
- Ghostscript
- ImageMagick
使用 php 和 Ghostscript 将 PDF 文档转换为预览图像
此命令行实用程序可在 windows、linux 和 Mac 上使用。 按照以下步骤将 PDF 文档转换为预览图像。
- 要开始安装,请访问 Ghostscript 的官方网站,下载可执行文件,然后按照安装说明进行操作。
-
运行下面的代码来验证安装。
<code> <code class="language-bash hljs"><span class="hljs-variable">$gs</span> --vers<strong class="keylink">io</strong>n </code></code>
- 在您的 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 language-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> </span></code></code>
上面的代码会将所有目录和文件加载到控制台。 我们现在可以使用 PHP 代码来执行 Ghostscript 命令。
这是我们使用的 PHP 脚本。
<code> <code class="language-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">" '"</span> . <span class="hljs-variable">$file</span> . <span class="hljs-string">"'"</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> </span></code></code>
代码执行从 _main_()
函数开始,它在命令行上获取 PDF 文件并验证其有效性。 如果文件有效,PHP 将执行 Ghostscript 命令。
输出:
<code> <code class="language-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 文档转换为预览图像
-
首先将所有 ImageMagick 二进制文件安装到您的系统中。 运行以下命令以安装 ImageMagick 依赖项。
<code> <code class="language-bash hljs"><span class="hljs-variable">$sudo</span> dnf install <strong class="keylink">GC</strong>c php-devel php-pear </code></code>
-
运行以下命令以安装 ImageMagick。
<code> <code class="language-bash hljs">$ sudo dnf install ImageMagick ImageMagick-devel </code></code>
-
然后,让我们安装 PHP 包装器类。
<code> <code class="language-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>
-
对于在 LAMP 服务器上使用它的用户,您必须重新启动 Apache 网络服务器。
<code> <code class="language-bash hljs">$ sudo service <strong class="keylink">Http</strong>d restart </code></code>
-
至此,我们需要的一切都准备好了。 我们现在可以使用早期的 PHP 脚本并编辑
create_preview()
函数。<code> <code class="language-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="language-bash hljs">$ php pdf_preview.php input.pdf Fetching preview... </code></code>
这就是我们如何在 PHP 上从 PDF 文档创建预览图像。 这两种方法具有相似的基本功能。 您的选择取决于您的喜好。
以上是在 PHP 中将 PDF 文档转换为预览图像的详细内容。更多信息请关注PHP中文网其他相关文章!

PHPSession失效的原因包括配置错误、Cookie问题和Session过期。1.配置错误:检查并设置正确的session.save_path。2.Cookie问题:确保Cookie设置正确。3.Session过期:调整session.gc_maxlifetime值以延长会话时间。

在PHP中调试会话问题的方法包括:1.检查会话是否正确启动;2.验证会话ID的传递;3.检查会话数据的存储和读取;4.查看服务器配置。通过输出会话ID和数据、查看会话文件内容等方法,可以有效诊断和解决会话相关的问题。

多次调用session_start()会导致警告信息和可能的数据覆盖。1)PHP会发出警告,提示session已启动。2)可能导致session数据意外覆盖。3)使用session_status()检查session状态,避免重复调用。

在PHP中配置会话生命周期可以通过设置session.gc_maxlifetime和session.cookie_lifetime来实现。1)session.gc_maxlifetime控制服务器端会话数据的存活时间,2)session.cookie_lifetime控制客户端cookie的生命周期,设置为0时cookie在浏览器关闭时过期。

使用数据库存储会话的主要优势包括持久性、可扩展性和安全性。1.持久性:即使服务器重启,会话数据也能保持不变。2.可扩展性:适用于分布式系统,确保会话数据在多服务器间同步。3.安全性:数据库提供加密存储,保护敏感信息。

在PHP中实现自定义会话处理可以通过实现SessionHandlerInterface接口来完成。具体步骤包括:1)创建实现SessionHandlerInterface的类,如CustomSessionHandler;2)重写接口中的方法(如open,close,read,write,destroy,gc)来定义会话数据的生命周期和存储方式;3)在PHP脚本中注册自定义会话处理器并启动会话。这样可以将数据存储在MySQL、Redis等介质中,提升性能、安全性和可扩展性。

SessionID是网络应用程序中用来跟踪用户会话状态的机制。1.它是一个随机生成的字符串,用于在用户与服务器之间的多次交互中保持用户的身份信息。2.服务器生成并通过cookie或URL参数发送给客户端,帮助在用户的多次请求中识别和关联这些请求。3.生成通常使用随机算法保证唯一性和不可预测性。4.在实际开发中,可以使用内存数据库如Redis来存储session数据,提升性能和安全性。

在无状态环境如API中管理会话可以通过使用JWT或cookies来实现。1.JWT适合无状态和可扩展性,但大数据时体积大。2.Cookies更传统且易实现,但需谨慎配置以确保安全性。


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

SublimeText3 Linux新版
SublimeText3 Linux最新版

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

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

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。