HOWTO · PHP

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

이 자습서에서는 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 문서의 미리보기 이미지를 생성하는 방법입니다. 두 방법 모두 비슷한 기본 기능을 가지고 있습니다. 귀하의 선택은 선호도에 따라 다릅니다.