PDF 문서를 PHP의 미리보기 이미지로 변환

John Wachira 2023년6월20일
  1. PHP 및 Ghostscript를 사용하여 PDF 문서를 미리보기 이미지로 변환
  2. PHP 및 ImageMagick을 사용하여 PDF 문서를 미리보기 이미지로 변환
PDF 문서를 PHP의 미리보기 이미지로 변환

이 자습서에서는 PDF 문서를 PHP의 미리 보기 이미지 세트로 변환하는 데 사용할 수 있는 두 가지 방법에 대해 설명합니다.

미리보기는 이미지의 콘텐츠를 복사하여 붙여넣을 수 없기 때문에 콘텐츠에 보안 계층을 추가합니다. 그들은 또한 우리가 다루지 않을 다른 기능을 제공합니다.

PDF 문서를 미리보기 이미지로 변환하는 가장 쉬운 방법은 타사 라이브러리를 활용하는 것입니다. 이것들은:

  1. 고스트스크립트
  2. 이미지매직

PHP 및 Ghostscript를 사용하여 PDF 문서를 미리보기 이미지로 변환

이 명령줄 유틸리티는 Windows, Linux 및 Mac에서 사용할 수 있습니다. PDF 문서를 미리보기 이미지로 변환하려면 다음 단계를 따르십시오.

  1. 설치를 시작하려면 Ghostscript 공식 웹 사이트로 이동하여 실행 파일을 다운로드하고 설치 지침을 따르십시오.

  2. 아래 코드를 실행하여 설치를 확인합니다.

    $gs --version
    
  3. PDF 파일의 디렉토리에서 아래 명령을 실행하십시오.

    $gs -dSAFER -dBATCH -sDEVICE=jpeg \
    -dTextAlphaBits=4 -dGraphicsAlphaBits=4 \
    -dFirstPage=1 -dLastPage=1 -r300 \
    -sOutputFile=preview.jpg input.pdf
    
  4. 위의 명령은 문서의 시작 페이지 이미지를 생성합니다. 아래와 같이 PHP에서 명령을 사용하기 위해 exec() 함수를 호출합니다.

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

    위의 코드는 모든 디렉토리와 파일을 콘솔에 로드합니다. 이제 PHP 코드를 사용하여 Ghostscript 명령을 실행할 수 있습니다.

  5. 우리가 사용한 PHP 스크립트는 다음과 같습니다.

<?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__();
?>
코드 실행은 `_main_()` 함수에서 시작되며 명령줄에서 PDF 파일을 가져오고 유효성을 확인합니다. 파일이 유효하면 PHP는 Ghostscript 명령을 실행합니다.

출력:
$ 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 !!

PHP 및 ImageMagick을 사용하여 PDF 문서를 미리보기 이미지로 변환

  1. 먼저 모든 ImageMagick 바이너리를 시스템에 설치합니다. 아래 명령을 실행하여 ImageMagick 종속성을 설치합니다.

    $sudo dnf install gcc php-devel php-pear
    
  2. 아래 명령을 실행하여 ImageMagick을 설치합니다.

    $ sudo dnf install ImageMagick ImageMagick-devel
    
  3. 그런 다음 PHP 래퍼 클래스를 설치해 보겠습니다.

    $ sudo pecl install imagick
    $ sudo bash -c "echo "extension=imagick.so" > /etc/php.d/imagick.ini"
    
  4. LAMP 서버에서 Apache 웹 서버를 사용하려면 Apache 웹 서버를 다시 시작해야 합니다.

    $ sudo service httpd restart
    
  5. 이제 필요한 모든 것이 준비되었습니다. 이제 이전 PHP 스크립트를 사용하고 create_preview() 함수를 편집할 수 있습니다.

    아래 코드를 사용하십시오.

    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 );
    }
    

    출력:

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

이것이 바로 PHP에서 PDF 문서의 미리보기 이미지를 생성하는 방법입니다. 두 방법 모두 비슷한 기본 기능을 가지고 있습니다. 귀하의 선택은 선호도에 따라 다릅니다.

작가: John Wachira
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

관련 문장 - PHP PDF