[컴][웹] php 에서 snappy 사용(pdf 생성 library)

pdf php 에서 larael 에서 pdf 

php 에서 snappy 사용(pdf 생성 library)

snappy 설치

composer require knplabs/knp-snappy

wkhtmltopdf download

windows 같은 경우 설치할 곳을 지정하게 된다. 필자는 d:\a\apps에 설치했다. 그래서 wkhtmltopdf.exe의 경로는 아래와 같다.

d:\a\apps\wkhtmltopdf\bin\wkhtmltopdf.exe

linux 라면 /usr/local/bin/ 으로 옮겨주고, execute 권한을 주자.

cp vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64 /usr/local/bin/
chmod +x /usr/local/bin/wkhtmltopdf-amd64

php code

use Knp\Snappy\Pdf;

$snappy = new Pdf('/usr/local/bin/wkhtmltopdf');
echo $snappy->getOutput('http://www.github.com');

직접만든 html 을 pdf로 출력하려면 아래처럼 하자.(참고) 아래처럼 하면 f:\tmp\testpdf2.pdf 가 생성된다.

$snappy->generateFromHtml('<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/></head><body><h1>제목1</h1><p>무슨말을 할까?.</p></body></html>', 'f:/tmp/testpdf2.pdf');

with laravel

// routes/web.php
Route::get('/testpdf', 'TestController@pdftest');
use Knp\Snappy\Pdf;

class TestController extends ApiController
{
    ...

    public function pdftest(Request $request)
    {
        $snappy = new Pdf('d:\\a\\apps\\wkhtmltopdf\\bin\\wkhtmltopdf.exe');

        return $snappy->getOutput('http://www.github.com');
    }

}

local html 을 file_get_contents 을 이용해서 reponse 로 주면 된다. 이것은 getOutput 을 참고했다.

use Knp\Snappy\Pdf;

class TestController extends ApiController
{
    ...

    public function pdftest(Request $request)
    {
        $snappy = new Pdf('d:\\a\\apps\\wkhtmltopdf\\bin\\wkhtmltopdf.exe');

        $outputPath = '/tmp/bill-123.pdf';
        $snappy->generateFromHtml('<h1>Bill</h1><p>You owe me money, dude.</p>', $outputPath);
        return \file_get_contents($outputPath);
    }

}

아래처럼 curl 을 날리면 pdf 가 download 될 것이다.

curl http://localhost/testpdf --output test.pdf

Reference

  1. GitHub - barryvdh/laravel-snappy: Laravel Snappy PDF

댓글 없음:

댓글 쓰기