Rumah > pembangunan bahagian belakang > tutorial php > Tukar dokumen PDF kepada pratonton imej dalam PHP

Tukar dokumen PDF kepada pratonton imej dalam PHP

WBOY
Lepaskan: 2024-02-28 11:36:01
ke hadapan
1248 orang telah melayarinya

editor php Apple akan memperkenalkan anda cara menukar dokumen PDF kepada pratonton imej dalam PHP. Apabila dokumen PDF dipaparkan pada halaman web, ia biasanya perlu ditukar kepada format imej untuk menyediakan fungsi pratonton. Melalui kod PHP, kami boleh menggunakan perpustakaan pihak ketiga untuk menukar PDF kepada imej, menjadikannya mudah bagi pengguna untuk pratonton dokumen PDF dalam talian. Artikel ini akan memperkenalkan langkah pelaksanaan kod khusus, membolehkan anda melaksanakan fungsi pratonton dokumen PDF dengan mudah.

Pratonton menambahkan lapisan keselamatan pada kandungan anda, kerana kandungan pada imej tidak boleh disalin dan ditampal. Mereka juga menawarkan ciri lain yang tidak akan kami perincikan.

Cara paling mudah untuk menukar dokumen PDF kepada imej pratonton adalah dengan menggunakan perpustakaan pihak ketiga. Ini adalah:

  1. Ghostscript
  2. ImageMagick

Tukar dokumen PDF kepada pratonton imej menggunakan php dan Ghostscript

Utiliti baris arahan ini tersedia pada windows, linux dan Mac. Ikuti langkah di bawah untuk menukar dokumen PDF kepada pratonton imej.

  1. Untuk memulakan pemasangan, lawati laman web rasmi Ghostscript, muat turun fail boleh laku dan ikut arahan pemasangan.
  2. Jalankan kod di bawah untuk mengesahkan pemasangan.
    <code>
    <code class="language-bash hljs"><span class="hljs-variable">$gs</span> --vers<strong class="keylink">io</strong>n
    </code></code>
    Salin selepas log masuk
  3. Dalam direktori fail PDF anda, jalankan arahan berikut. ```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>
Salin selepas log masuk

Kod di atas akan memuatkan semua direktori dan fail ke dalam konsol. Kini kita boleh menggunakan kod PHP untuk melaksanakan arahan Ghostscript.

Ini adalah skrip PHP yang kami gunakan.

<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>
Salin selepas log masuk

Pelaksanaan kod bermula dengan fungsi _main_(), yang mengambil fail PDF pada baris arahan dan mengesahkan kesahihannya. Jika fail itu sah, PHP akan melaksanakan arahan Ghostscript.

Keluaran:

<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>
Salin selepas log masuk

Tukar dokumen PDF kepada pratonton imej menggunakan PHP dan ImageMagick

  1. Mulakan dengan memasang semua binari ImageMagick ke dalam sistem anda. Jalankan arahan berikut untuk memasang dependensi 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>
    Salin selepas log masuk
  2. Jalankan arahan berikut untuk memasang ImageMagick.

    <code>
    <code class="language-bash hljs">$ sudo dnf install ImageMagick ImageMagick-devel
    </code></code>
    Salin selepas log masuk
  3. Kemudian, mari pasang kelas pembalut 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>
    Salin selepas log masuk
  4. Bagi mereka yang menggunakannya pada LAMP server, anda mesti memulakan semula Apache networkserver.

    <code>
    <code class="language-bash hljs">$ sudo service <strong class="keylink">Http</strong>d restart
    </code></code>
    Salin selepas log masuk
  5. Pada ketika ini, semua yang kita perlukan sudah sedia. Kini kita boleh menggunakan skrip PHP yang lebih awal dan mengedit fungsi 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>
    Salin selepas log masuk

    Hasil keluaran:

    <code>
    <code class="language-bash hljs">$ php pdf_preview.php input.pdf
    Fetching preview...
    </code></code>
    Salin selepas log masuk

Beginilah cara kita boleh mencipta imej pratonton daripada dokumen PDF pada PHP. Kedua-dua kaedah mempunyai fungsi asas yang sama. Pilihan anda bergantung pada pilihan anda.

Atas ialah kandungan terperinci Tukar dokumen PDF kepada pratonton imej dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:lsjlt.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan