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
댓글 없음:
댓글 쓰기