2017-09-29 11 views
0

PHP 스크립트를 사용하여 이미지를 생성하고 mPDF 라이브러리에서 생성 된 PDF 파일에 저장하려고합니다.PHP 스크립트로 생성 된 mPDF 이미지

이미지가있는 예제를 포함하여 mpdf-examples 저장소를 복제했습니다. 링크는 https://github.com/mpdf/mpdf-examples이므로 소스 코드를 볼 수 있습니다.

example04_images.php에서 tiger.php이 반환 한 이미지는 작동하지 않습니다.

php example04_images.php > out.pdf 명령 줄에서 실행하면 파일에 [X] 유형의 이미지가 포함되어로드되지 못했습니다.

브라우저에서 스크립트를로드하면 스크립트가 영구히로드되지 않습니다. 나는 PDF가 제대로 생성, .php 생성 된 이미지를 사용하는 코드의 비트를 제거하면

내 작곡가 파일

{ 
    "name": "mpdf/examples", 
    "description": "Example repository for Mpdf HTML to PDF generator", 
    "require": { 
    "ext-gd": "*", 
     "mpdf/mpdf": "7.0.0-beta2" 
    } 
} 

입니다. PHP가 생성 한 이미지를 포함시킬 때만 실패합니다.

php -v은 다음과 같습니다

PHP를 사용하여 이미지를 생성 된 것으로 보인다

PHP 7.0.24-1+ubuntu14.04.1+deb.sury.org+1 (cli) (built: Sep 28 2017 16:33:02) (NTS)

많은 사람들을 위해 작동하고, 심지어 문서는 가능하다고 말한다. 그러나 그것은 나를 위해 작동하지 않습니다.

+0

브라우저에 예제를 표시하기 위해 어떤 서버를 사용하고 있습니까? – Finwe

+0

PHP Cli를 사용하고 있습니다. 다른 것으로 전환해야합니까? 그렇다면 왜 php cli가 실패합니까? 또한 Heroku에서 실패합니다 –

+0

PHP 임베디드 서버'php -S'를 실행한다는 의미입니까? Heroku의 환경은 무엇입니까? – Finwe

답변

0

mPDF는 내부적으로 file_get_contents 호출로 이미지를 가져옵니다. php -S과 같은 단일 스레드 서버를 사용하는 경우 후속 요청으로 인해 응용 프로그램이 중지됩니다. This SO QA은이 동작을 깔끔하게 요약합니다. 이것이 브라우저 요청이 무제한 정지되는 이유입니다.

mPDF는 단일 스레드 서버에서 일부 기능을 수행 할 수 있지만 모든 기능을 수행 할 수는 없습니다. 적절한 서버 (Apache, PHP-FPM이 포함 된 nginx)를 사용하는 것이 좋습니다.

명령 줄에서 스크립트를 실행할 때 이미지가 올바르게로드되지 않는 것이 좋습니다. 이미지 경로는 상대 URL로, 올바른 내용을 반환하기 위해 PHP가 처리해야합니다. 후속 HTTP 요청 없이는이를 달성 할 수있는 간단한 방법이 없습니다. 이는 단순한 PHP CLI 호출의 범위를 벗어납니다.

예제를 CLI에서 작동 시키려면 실제 이미지 파일 (이미지 예제에서 올바르게 작동 함)에 연결하거나 스크립트가있는 tiger.php 스크립트의 전체 URL을 제공해야합니다 서버로 처리됩니다.