Heim  >  Artikel  >  Backend-Entwicklung  >  Konvertieren Sie ein PDF-Dokument in ein Vorschaubild in PHP

Konvertieren Sie ein PDF-Dokument in ein Vorschaubild in PHP

WBOY
WBOYnach vorne
2024-02-28 11:34:191178Durchsuche

PHP-Editor Apple stellt Ihnen vor, wie Sie PDF-Dokumente in PHP in Vorschaubilder konvertieren. Wenn ein PDF-Dokument auf einer Webseite angezeigt wird, muss es normalerweise in ein Bildformat konvertiert werden, um eine Vorschaufunktion bereitzustellen. Mithilfe von PHP-Code können wir Bibliotheken von Drittanbietern verwenden, um PDFs in Bilder zu konvertieren, wodurch es für Benutzer einfacher wird, PDF-Dokumente online in der Vorschau anzuzeigen. In diesem Artikel werden die spezifischen Code-Implementierungsschritte vorgestellt, damit Sie die Vorschaufunktion von PDF-Dokumenten einfach implementieren können.

Vorschauen verleihen Ihren Inhalten eine Ebene der Sicherheit, da Inhalte auf Bildern nicht kopiert und eingefügt werden können. Darüber hinaus bieten sie weitere Funktionen, auf die wir nicht näher eingehen.

Der einfachste Weg, ein PDF-Dokument in ein Vorschaubild umzuwandeln, ist die Verwendung einer Bibliothek eines Drittanbieters. Das sind:

  1. Ghostscript
  2. ImageMagick

Konvertieren Sie ein PDF-Dokument mit php und Ghostscript

in ein Vorschaubild

Dieses Befehlszeilenprogramm ist unter Windows, Linux und Mac verfügbar. Führen Sie die folgenden Schritte aus, um PDF-Dokumente in Vorschaubilder zu konvertieren.

  1. Um die Installation zu starten, besuchen Sie die offizielle Website von Ghostscript, laden Sie die ausführbare Datei herunter und befolgen Sie die Installationsanweisungen.
  2. Führen Sie den folgenden Code aus, um die Installation zu überprüfen.
    <code>
    <code class="language-bash hljs"><span class="hljs-variable">$gs</span> --vers<strong class="keylink">io</strong>n
    </code></code>
  3. Führen Sie in Ihrem PDF-Dateiverzeichnis den folgenden Befehl aus. ```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>
</code></code>

Der obige Code lädt alle Verzeichnisse und Dateien in die Konsole. Wir können jetzt PHP-Code verwenden, um Ghostscript-Befehle auszuführen.

Dies ist das PHP-Skript, das wir verwenden.

<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">" &#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>

Die Codeausführung beginnt mit der Funktion _main_(), die die PDF-Datei in der Befehlszeile abruft und ihre Gültigkeit überprüft. Wenn die Datei gültig ist, führt PHP den Ghostscript-Befehl aus.

Ausgabe:

<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>

Konvertieren Sie PDF-Dokumente mit PHP und ImageMagick

in Vorschaubilder
  1. Beginnen Sie mit der Installation aller ImageMagick-Binärdateien in Ihrem System. Führen Sie den folgenden Befehl aus, um ImageMagick-Abhängigkeiten zu installieren.

    <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>
  2. Führen Sie den folgenden Befehl aus, um ImageMagick zu installieren.

    <code>
    <code class="language-bash hljs">$ sudo dnf install ImageMagick ImageMagick-devel
    </code></code>
  3. Dann installieren wir die PHP-Wrapper-Klasse.

    <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>
  4. Wenn Sie es auf einem LAMP-Server verwenden, müssen Sie den Apache-Netzwerkserver neu starten.

    <code>
    <code class="language-bash hljs">$ sudo service <strong class="keylink">Http</strong>d restart
    </code></code>
    Zu diesem Zeitpunkt ist alles bereit, was wir brauchen. Wir können jetzt das frühere PHP-Skript verwenden und die

    -Funktion bearbeiten.
  5. <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>
  6. Ausgabeergebnis:

    <code>
    <code class="language-bash hljs">$ php pdf_preview.php input.pdf
    Fetching preview...
    </code></code>
    create_preview()

    So erstellen wir ein Vorschaubild aus einem PDF-Dokument in PHP. Beide Methoden haben eine ähnliche Grundfunktionalität. Ihre Wahl hängt von Ihren Vorlieben ab.

Das obige ist der detaillierte Inhalt vonKonvertieren Sie ein PDF-Dokument in ein Vorschaubild in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:lsjlt.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen