Convierta un documento PDF en una imagen de vista previa en PHP

John Wachira 20 junio 2023
  1. Convierta un documento PDF en una imagen de vista previa con PHP y Ghostscript
  2. Convierta un documento PDF en una imagen de vista previa con PHP e ImageMagick
Convierta un documento PDF en una imagen de vista previa en PHP

Este tutorial discutirá dos métodos que puede usar para convertir un documento PDF en un conjunto de imágenes de vista previa en PHP.

La vista previa agrega una capa de seguridad a su contenido porque el contenido de las imágenes no se puede copiar ni pegar. También ofrecen otras funcionalidades en las que no nos detendremos.

La forma más fácil de convertir documentos PDF para obtener una vista previa de las imágenes es utilizar bibliotecas de terceros. Estos son:

  1. Guión fantasma
  2. Magia de imágenes

Convierta un documento PDF en una imagen de vista previa con PHP y Ghostscript

Esta utilidad de línea de comandos está disponible en Windows, Linux y Mac. Siga estos pasos para convertir documentos PDF en imágenes de vista previa.

  1. Para iniciar la instalación, vaya al sitio web oficial de Ghostscript, descargue el archivo ejecutable y siga las instrucciones de configuración.

  2. Ejecute el siguiente código para verificar la instalación.

    $gs --version
    
  3. En el directorio de su archivo PDF, ejecute el siguiente comando.

    $gs -dSAFER -dBATCH -sDEVICE=jpeg \
    -dTextAlphaBits=4 -dGraphicsAlphaBits=4 \
    -dFirstPage=1 -dLastPage=1 -r300 \
    -sOutputFile=preview.jpg input.pdf
    
  4. El comando anterior creará una imagen de la página de inicio en su documento. Llamaremos a la función exec() para usar el comando en PHP, como se muestra a continuación.

    <?php
    exec( "ls -l", $output_str, $return_val );
    foreach ( $output_str as $line ) {
        echo $line . "\n";
    }
    ?>
    

    El código anterior cargará todos los directorios y archivos en la consola. Ahora podemos usar código PHP para ejecutar el comando Ghostscript.

  5. Aquí está el script PHP que usamos.

<?php

function my_pdf ( $file ) {
    $file_info = file_get_contents( $file );

    if ( preg_match( "/^%PDF-[0-1]\.[0-9]+/", $file_info ) ) {
        return true;
    }
    else {
        return false;
    }
}
function our_preview ( $file ) {
    $our_format = "png";
    $prvw_page = "1";
    $resolution = "300";
    $our_file = "prvw.jpg";

    $command  = "gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=" . $our_format . " ";
    $command .= "-dTextAlphaBits=" . " -dGraphicsAlphaBits=" . . " ";
    $command .= "-dFirstPage=" . $prvw_page . " -dLastPage=" . $prvw_page . " ";
    $command .= "-r" . $resolution . " ";
    $command .= "-sOutputFile=" . $our_file . " '" . $file . "'";
    echo "Running command...\n";
    exec( $command, $com_output, $ret_val );
    foreach( $com_output as $line ) {
        echo $line . "\n";
    }
    if ( !$ret_val ) {
        echo "Preview created !!\n";
    }
    else {
        echo "Error while creating.\n";
    }
}
function __main__() {
    global $arg;
    $inp_file = $arg[1];

    if ( my_pdf( $inp_file ) ) {
        // Preview for the pdf
        create_preview( $inp_file );
    }
    else {
        echo "The  file " . $inp_file . " is not a valid PDF document.\n";
    }
}
__main__();
?>
La ejecución del código comienza en la función `_main_()`, donde obtiene el archivo PDF en la línea de comando y verifica su validez. Si el archivo es válido, PHP ejecutará el comando Ghostscript.

Producción:
$ php pdf_preview.php input.pdf
Executing command...
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 for details.
Processing pages 1 through 1.
Page 1
Preview created !!

Convierta un documento PDF en una imagen de vista previa con PHP e ImageMagick

  1. Comience instalando todos los archivos binarios de ImageMagick en su sistema. Ejecute el siguiente comando para instalar las dependencias de ImageMagick.

    $sudo dnf install gcc php-devel php-pear
    
  2. Ejecute el siguiente comando para instalar ImageMagick.

    $ sudo dnf install ImageMagick ImageMagick-devel
    
  3. Luego, instalemos las clases contenedoras de PHP.

    $ sudo pecl install imagick
    $ sudo bash -c "echo "extension=imagick.so" > /etc/php.d/imagick.ini"
    
  4. Debe reiniciar su servidor web Apache para aquellos que lo usan en un servidor LAMP.

    $ sudo service httpd restart
    
  5. En este punto, todo lo que necesitamos está listo. Ahora podemos usar el script PHP anterior y editar la función create_preview().

    Usa el siguiente código:

    function create_preview ( $file ) {
        $output_format = "jpeg";
        $preview_page = "1";
        $resolution = "300";
        $output_file = "imagick_preview.jpg";
    
        echo "Fetching preview...\n";
        $img_data = new Imagick();
        $img_data->setResolution( $resolution, $resolution );
        $img_data->readImage( $file . "[" . ($preview_page - 1) . "]" );
        $img_data->setImageFormat( $output_format );
    
        file_put_contents( $output_file, $img_data, FILE_USE_INCLUDE_PATH );
    }
    

    Producción:

    $ php pdf_preview.php input.pdf
    Fetching preview...
    

Así es como creamos imágenes de vista previa a partir de documentos PDF en PHP. Ambos métodos tienen una funcionalidad base similar. Su elección depende de sus preferencias.

John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

Artículo relacionado - PHP PDF