PDF관련 여러 패키지 문서를 확인해 보고 간단히 테스트 해봤지만 ‘phpwkhtmltopdf’ 만한 패키지가 없는것 같다.
요구사항
- wkhtmltopdf 라이브러리
- phpwkhtmltopdf 패키지
phpwkhtmltopdf 패키지는 wkhtmltopdf 라이브러리를 의존 하고 있기 때문에 반드시 설치 해야한다
apt-get insall wkhtmltopdf 으로 설치하게 되면 phpwkhtmltopdf 패키지의 PDF 병합 기능을 사용 할수 없으므로 공식사이트에서 제공 하는 설치파일로 설치하는것이 좋다.
- wkhtmltopdf 의존성 패키지 설치
apt-get update && apt-get install -y \
libfreetype6-dev \
libfontconfig \
zlib1g \
libxrender1 \
libxext6 \
libx11-6 \
fontconfig \
xfonts-75dpi \
xfonts-base
- wkhtmltopdf 설치
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.buster_amd64.deb
dpkg -i 'wkhtmltox_0.12.6-1.buster_amd64.deb'
- phpwkhtmltopdf 설치
composer require mikehaertl/phpwkhtmltopdf
사용방법
- 기본사용
use mikehaertl\wkhtmlto\Pdf;
// You can pass a filename, a HTML string, an URL or an options array to the constructor
$pdf = new Pdf('/path/to/page.html');
// On some systems you may have to set the path to the wkhtmltopdf executable
// $pdf->binary = 'C:\...';
if (!$pdf->saveAs('/path/to/page.pdf')) {
$error = $pdf->getError();
// ... handle error here
}
- 커버 & table of content & PDF 이어붙이기
use mikehaertl\wkhtmlto\Pdf;
$pdf = new Pdf;
$pdf->addPage('/path/to/page.html');
$pdf->addPage('<html>....</html>');
$pdf->addPage('http://www.example.com');
// Add a cover (same sources as above are possible)
$pdf->addCover('/path/to/mycover.html');
// Add a Table of contents
$pdf->addToc();
// Save the PDF
if (!$pdf->saveAs('/path/to/report.pdf')) {
$error = $pdf->getError();
// ... handle error here
}
// ... or send to client for inline display
if (!$pdf->send()) {
$error = $pdf->getError();
// ... handle error here
}
// ... or send to client as file download
if (!$pdf->send('report.pdf')) {
$error = $pdf->getError();
// ... handle error here
}
// ... or you can get the raw pdf as a string
$content = $pdf->toString();
- 이미지 생성
use mikehaertl\wkhtmlto\Image;
// You can pass a filename, a HTML string, an URL or an options array to the constructor
$image = new Image('/path/to/page.html');
$image->saveAs('/path/to/page.png');
// ... or send to client for inline display
if (!$image->send()) {
$error = $image->getError();
// ... handle error here
}
// ... or send to client as file download
if (!$image->send('page.png')) {
$error = $image->getError();
// ... handle error here
}
PDF 한글이 깨지는 경우 한글 폰트를 설치하면 됨
링크 참고
apt-get install fontconfig
curl -o nanumfont.zip http://cdn.naver.com/naver/NanumFont/fontfiles/NanumFont_TTF_ALL.zip
unzip -d /usr/share/fonts/nanum nanumfont.zip
fc-cache -f -v
PDF 관련 패키지 리스트
- http://www.fpdf.org/
- https://mpdf.github.io/
- https://github.com/dompdf/dompdf
- https://github.com/KnpLabs/snappy
- https://github.com/tecnickcom/tcpdf
바로 테스트하기 (도커 설치 필수)