PHP로 PDF를 만들 때는 wkhtmltopdf + snappy로 싸워라.
7646 단어 PHPPDFwkhtmltopdf
! ! 최신 정보는 아래 기사를 참조하십시오! !
PHP로 PDF를 작성할 때는 phpwkhtmltopdf로 싸워 [2016년도판]
HTML을 PDF로 변환하는 접근 방식의 어려움
· 인라인 CSS 만 허용
· 원래 CSS2.0 계열의 속성 만 허용
· 셀렉터로 요소를 좁힐 수 없다
mPDF, 주로 너의 일이다.
wkhtmltopdf와 snappy로 행복해지자
wkhtmltopdf
htp // wkhtml 및 pdf. rg/
Webkit html to pdf의 약자.
이름에서 알 수 있듯이 HTML을 Webkit로 해석하여 PDF로 변환하는 Google 근제 도구입니다.
물론 HTML5도 CSS3.0도 어렵게 해석합니다.
최고감 있다.
knplabs/knp-snappy
htps : // Pac cross st. 오 rg / pa c gaze s / kn p bs / kn ps py
wkhtmltopdf를 PHP로 처리하는 래퍼 클래스입니다.
packagist로 배포됩니다.
도입 방법
CentOS 6.5(64bit판)를 상정하고 있습니다.
다른 환경의 경우 필요한 버전이 다르므로 본가 사이트 에서 적절한 wkhtmltopdf 패키지를 구하십시오.
wkhtmltopdf 설치
우선은 wkhtmltopdf의 인스톨로부터 진행해 갑니다.rpm -ivh
런타임에 오류가 발생하면 오류를 보면서 yum이 부족한 패키지를 넣으십시오.
$ cd /usr/local/src
$ wget http://download.gna.org/wkhtmltopdf/0.12/0.12.2.1/wkhtmltox-0.12.2.1_linux-centos6-amd64.rpm
$ rpm -ivh wkhtmltox-0.12.2.1_linux-centos6-amd64.rpm
일본어 글꼴 설치
wkhtmltopdf에는 일본어 폰트가 들어 있지 않으므로, 일본어를 통과하면 그 부분만이 하얗게 됩니다.
그래서 반드시 일본어 폰트를 별도로 설치합시다.
이번은 IPA 폰트의 신세가 되기로 하겠습니다.
ht tp // // 가파퉁 t. 가득. . jp / 이파에 x 후 t / 드 w ぉ 아 d. HTML
$ wget http://ipafont.ipa.go.jp/ipaexfont/ipaexm00201.php
$ unzip ipaexm00201.php
$ mv ipaexm00201/ /usr/share/fonts
snappy 소개
composer로 가져옵니다.
배포하려는 PHP 프로젝트에서 다음 명령을 실행합니다.composer require knplabs/knp-snappy
PDF 출력 샘플
HTML을 준비하고 Snappy의 getOutputFromHtml
메소드에 던지기만 하면 됩니다.
Smarty등의 템플릿 엔진과 조합하면, 바삭바삭과 장표의 덩굴을 짜 갈 수 있다고 생각합니다.
샘플require './vendor/autoload.php';
$html = <<<EOF
<style>
.red {
color:red;
background-color: black;
font-size:30px;
}
.opacity {
opacity: 0.3;
}
</style>
<div class="red">
<p>祝ってやる</p>
<p>祝ってやる</p>
<p>祝ってやる</p>
<p>祝ってやる</p>
<p class="opacity">祝ってやる</p>
<p>祝ってやる</p>
<p>祝ってやる</p>
<p>祝ってやる</p>
<p class="opacity">祝ってやる</p>
<p>祝ってやる</p>
<p>祝ってやる</p>
</div>
EOF;
// wkhtmltopdfの位置をコンストラクタに渡す
$pdf = new Knp\Snappy\Pdf('/usr/local/bin/wkhtmltopdf');
// encoding = utf-8をセット
$pdf->setOption('encoding', 'utf-8');
// PDFをブラウザに出力
header("Content-Type: application/pdf");
echo $pdf->getOutputFromHtml($html);
CSS3의 속성인 opacity도 올바르게 해석되어 있다는 것을 알 수 있습니다.
확장해도 좀 편리하게
pdf.phpclass Pdf extends \Knp\Snappy\Pdf
{
// 初期値にwkhtmltopdfの位置を登録、エンコード設定をUTF-8に変更
public function __construct($binary = '/usr/local/bin/wkhtmltopdf', array $options = [], array $env = null)
{
parent::__construct($binary, $options, $env);
$this->setOption('encoding', 'utf-8');
}
// headerの出力も自動で行う
public function output($html)
{
header("Content-Type: application/pdf");
return $this->getOutputFromHtml($html);
}
}
exampleecho (new Pdf)->output($html);
사용상의 주의점
htps : // 기주 b. 이 m / wkhtml, pdf / wkhtml 및 pdf / 이스에 s / 1524
wkhtmltopdf는 테이블을 사용하면, 2페이지째 이후에도 자동으로 헤더를 부여해 줍니다만, 그것이 굉장한 기세로 어긋나거나 다음의 열과 쓰거나 합니다.
이 스타일을 부여하면 해결할 수 있습니다.
tr {
page-break-inside: avoid;
}
요약
어쨌든 어떤 쓰는 법을 해도 해석해 주므로 이제 PDF는 무서워하지 않습니다.
PDF 출력 기능의 티켓을 끊어 다른 사람에게 돌려보내는 것은 이제 그만하자.
이제 그만하자
Reference
이 문제에 관하여(PHP로 PDF를 만들 때는 wkhtmltopdf + snappy로 싸워라.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/morisuke/items/b9c18dcba99ba6501d6e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
· 인라인 CSS 만 허용
· 원래 CSS2.0 계열의 속성 만 허용
· 셀렉터로 요소를 좁힐 수 없다
mPDF, 주로 너의 일이다.
wkhtmltopdf와 snappy로 행복해지자
wkhtmltopdf
htp // wkhtml 및 pdf. rg/
Webkit html to pdf의 약자.
이름에서 알 수 있듯이 HTML을 Webkit로 해석하여 PDF로 변환하는 Google 근제 도구입니다.
물론 HTML5도 CSS3.0도 어렵게 해석합니다.
최고감 있다.
knplabs/knp-snappy
htps : // Pac cross st. 오 rg / pa c gaze s / kn p bs / kn ps py
wkhtmltopdf를 PHP로 처리하는 래퍼 클래스입니다.
packagist로 배포됩니다.
도입 방법
CentOS 6.5(64bit판)를 상정하고 있습니다.
다른 환경의 경우 필요한 버전이 다르므로 본가 사이트 에서 적절한 wkhtmltopdf 패키지를 구하십시오.
wkhtmltopdf 설치
우선은 wkhtmltopdf의 인스톨로부터 진행해 갑니다.rpm -ivh
런타임에 오류가 발생하면 오류를 보면서 yum이 부족한 패키지를 넣으십시오.
$ cd /usr/local/src
$ wget http://download.gna.org/wkhtmltopdf/0.12/0.12.2.1/wkhtmltox-0.12.2.1_linux-centos6-amd64.rpm
$ rpm -ivh wkhtmltox-0.12.2.1_linux-centos6-amd64.rpm
일본어 글꼴 설치
wkhtmltopdf에는 일본어 폰트가 들어 있지 않으므로, 일본어를 통과하면 그 부분만이 하얗게 됩니다.
그래서 반드시 일본어 폰트를 별도로 설치합시다.
이번은 IPA 폰트의 신세가 되기로 하겠습니다.
ht tp // // 가파퉁 t. 가득. . jp / 이파에 x 후 t / 드 w ぉ 아 d. HTML
$ wget http://ipafont.ipa.go.jp/ipaexfont/ipaexm00201.php
$ unzip ipaexm00201.php
$ mv ipaexm00201/ /usr/share/fonts
snappy 소개
composer로 가져옵니다.
배포하려는 PHP 프로젝트에서 다음 명령을 실행합니다.composer require knplabs/knp-snappy
PDF 출력 샘플
HTML을 준비하고 Snappy의 getOutputFromHtml
메소드에 던지기만 하면 됩니다.
Smarty등의 템플릿 엔진과 조합하면, 바삭바삭과 장표의 덩굴을 짜 갈 수 있다고 생각합니다.
샘플require './vendor/autoload.php';
$html = <<<EOF
<style>
.red {
color:red;
background-color: black;
font-size:30px;
}
.opacity {
opacity: 0.3;
}
</style>
<div class="red">
<p>祝ってやる</p>
<p>祝ってやる</p>
<p>祝ってやる</p>
<p>祝ってやる</p>
<p class="opacity">祝ってやる</p>
<p>祝ってやる</p>
<p>祝ってやる</p>
<p>祝ってやる</p>
<p class="opacity">祝ってやる</p>
<p>祝ってやる</p>
<p>祝ってやる</p>
</div>
EOF;
// wkhtmltopdfの位置をコンストラクタに渡す
$pdf = new Knp\Snappy\Pdf('/usr/local/bin/wkhtmltopdf');
// encoding = utf-8をセット
$pdf->setOption('encoding', 'utf-8');
// PDFをブラウザに出力
header("Content-Type: application/pdf");
echo $pdf->getOutputFromHtml($html);
CSS3의 속성인 opacity도 올바르게 해석되어 있다는 것을 알 수 있습니다.
확장해도 좀 편리하게
pdf.phpclass Pdf extends \Knp\Snappy\Pdf
{
// 初期値にwkhtmltopdfの位置を登録、エンコード設定をUTF-8に変更
public function __construct($binary = '/usr/local/bin/wkhtmltopdf', array $options = [], array $env = null)
{
parent::__construct($binary, $options, $env);
$this->setOption('encoding', 'utf-8');
}
// headerの出力も自動で行う
public function output($html)
{
header("Content-Type: application/pdf");
return $this->getOutputFromHtml($html);
}
}
exampleecho (new Pdf)->output($html);
사용상의 주의점
htps : // 기주 b. 이 m / wkhtml, pdf / wkhtml 및 pdf / 이스에 s / 1524
wkhtmltopdf는 테이블을 사용하면, 2페이지째 이후에도 자동으로 헤더를 부여해 줍니다만, 그것이 굉장한 기세로 어긋나거나 다음의 열과 쓰거나 합니다.
이 스타일을 부여하면 해결할 수 있습니다.
tr {
page-break-inside: avoid;
}
요약
어쨌든 어떤 쓰는 법을 해도 해석해 주므로 이제 PDF는 무서워하지 않습니다.
PDF 출력 기능의 티켓을 끊어 다른 사람에게 돌려보내는 것은 이제 그만하자.
이제 그만하자
Reference
이 문제에 관하여(PHP로 PDF를 만들 때는 wkhtmltopdf + snappy로 싸워라.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/morisuke/items/b9c18dcba99ba6501d6e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
CentOS 6.5(64bit판)를 상정하고 있습니다.
다른 환경의 경우 필요한 버전이 다르므로 본가 사이트 에서 적절한 wkhtmltopdf 패키지를 구하십시오.
wkhtmltopdf 설치
우선은 wkhtmltopdf의 인스톨로부터 진행해 갑니다.
rpm -ivh
런타임에 오류가 발생하면 오류를 보면서 yum이 부족한 패키지를 넣으십시오.$ cd /usr/local/src
$ wget http://download.gna.org/wkhtmltopdf/0.12/0.12.2.1/wkhtmltox-0.12.2.1_linux-centos6-amd64.rpm
$ rpm -ivh wkhtmltox-0.12.2.1_linux-centos6-amd64.rpm
일본어 글꼴 설치
wkhtmltopdf에는 일본어 폰트가 들어 있지 않으므로, 일본어를 통과하면 그 부분만이 하얗게 됩니다.
그래서 반드시 일본어 폰트를 별도로 설치합시다.
이번은 IPA 폰트의 신세가 되기로 하겠습니다.
ht tp // // 가파퉁 t. 가득. . jp / 이파에 x 후 t / 드 w ぉ 아 d. HTML
$ wget http://ipafont.ipa.go.jp/ipaexfont/ipaexm00201.php
$ unzip ipaexm00201.php
$ mv ipaexm00201/ /usr/share/fonts
snappy 소개
composer로 가져옵니다.
배포하려는 PHP 프로젝트에서 다음 명령을 실행합니다.
composer require knplabs/knp-snappy
PDF 출력 샘플
HTML을 준비하고 Snappy의 getOutputFromHtml
메소드에 던지기만 하면 됩니다.
Smarty등의 템플릿 엔진과 조합하면, 바삭바삭과 장표의 덩굴을 짜 갈 수 있다고 생각합니다.
샘플require './vendor/autoload.php';
$html = <<<EOF
<style>
.red {
color:red;
background-color: black;
font-size:30px;
}
.opacity {
opacity: 0.3;
}
</style>
<div class="red">
<p>祝ってやる</p>
<p>祝ってやる</p>
<p>祝ってやる</p>
<p>祝ってやる</p>
<p class="opacity">祝ってやる</p>
<p>祝ってやる</p>
<p>祝ってやる</p>
<p>祝ってやる</p>
<p class="opacity">祝ってやる</p>
<p>祝ってやる</p>
<p>祝ってやる</p>
</div>
EOF;
// wkhtmltopdfの位置をコンストラクタに渡す
$pdf = new Knp\Snappy\Pdf('/usr/local/bin/wkhtmltopdf');
// encoding = utf-8をセット
$pdf->setOption('encoding', 'utf-8');
// PDFをブラウザに出力
header("Content-Type: application/pdf");
echo $pdf->getOutputFromHtml($html);
CSS3의 속성인 opacity도 올바르게 해석되어 있다는 것을 알 수 있습니다.
확장해도 좀 편리하게
pdf.phpclass Pdf extends \Knp\Snappy\Pdf
{
// 初期値にwkhtmltopdfの位置を登録、エンコード設定をUTF-8に変更
public function __construct($binary = '/usr/local/bin/wkhtmltopdf', array $options = [], array $env = null)
{
parent::__construct($binary, $options, $env);
$this->setOption('encoding', 'utf-8');
}
// headerの出力も自動で行う
public function output($html)
{
header("Content-Type: application/pdf");
return $this->getOutputFromHtml($html);
}
}
exampleecho (new Pdf)->output($html);
사용상의 주의점
htps : // 기주 b. 이 m / wkhtml, pdf / wkhtml 및 pdf / 이스에 s / 1524
wkhtmltopdf는 테이블을 사용하면, 2페이지째 이후에도 자동으로 헤더를 부여해 줍니다만, 그것이 굉장한 기세로 어긋나거나 다음의 열과 쓰거나 합니다.
이 스타일을 부여하면 해결할 수 있습니다.
tr {
page-break-inside: avoid;
}
요약
어쨌든 어떤 쓰는 법을 해도 해석해 주므로 이제 PDF는 무서워하지 않습니다.
PDF 출력 기능의 티켓을 끊어 다른 사람에게 돌려보내는 것은 이제 그만하자.
이제 그만하자
Reference
이 문제에 관하여(PHP로 PDF를 만들 때는 wkhtmltopdf + snappy로 싸워라.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/morisuke/items/b9c18dcba99ba6501d6e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
require './vendor/autoload.php';
$html = <<<EOF
<style>
.red {
color:red;
background-color: black;
font-size:30px;
}
.opacity {
opacity: 0.3;
}
</style>
<div class="red">
<p>祝ってやる</p>
<p>祝ってやる</p>
<p>祝ってやる</p>
<p>祝ってやる</p>
<p class="opacity">祝ってやる</p>
<p>祝ってやる</p>
<p>祝ってやる</p>
<p>祝ってやる</p>
<p class="opacity">祝ってやる</p>
<p>祝ってやる</p>
<p>祝ってやる</p>
</div>
EOF;
// wkhtmltopdfの位置をコンストラクタに渡す
$pdf = new Knp\Snappy\Pdf('/usr/local/bin/wkhtmltopdf');
// encoding = utf-8をセット
$pdf->setOption('encoding', 'utf-8');
// PDFをブラウザに出力
header("Content-Type: application/pdf");
echo $pdf->getOutputFromHtml($html);
pdf.php
class Pdf extends \Knp\Snappy\Pdf
{
// 初期値にwkhtmltopdfの位置を登録、エンコード設定をUTF-8に変更
public function __construct($binary = '/usr/local/bin/wkhtmltopdf', array $options = [], array $env = null)
{
parent::__construct($binary, $options, $env);
$this->setOption('encoding', 'utf-8');
}
// headerの出力も自動で行う
public function output($html)
{
header("Content-Type: application/pdf");
return $this->getOutputFromHtml($html);
}
}
example
echo (new Pdf)->output($html);
사용상의 주의점
htps : // 기주 b. 이 m / wkhtml, pdf / wkhtml 및 pdf / 이스에 s / 1524
wkhtmltopdf는 테이블을 사용하면, 2페이지째 이후에도 자동으로 헤더를 부여해 줍니다만, 그것이 굉장한 기세로 어긋나거나 다음의 열과 쓰거나 합니다.
이 스타일을 부여하면 해결할 수 있습니다.
tr {
page-break-inside: avoid;
}
요약
어쨌든 어떤 쓰는 법을 해도 해석해 주므로 이제 PDF는 무서워하지 않습니다.
PDF 출력 기능의 티켓을 끊어 다른 사람에게 돌려보내는 것은 이제 그만하자.
이제 그만하자
Reference
이 문제에 관하여(PHP로 PDF를 만들 때는 wkhtmltopdf + snappy로 싸워라.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/morisuke/items/b9c18dcba99ba6501d6e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
tr {
page-break-inside: avoid;
}
어쨌든 어떤 쓰는 법을 해도 해석해 주므로 이제 PDF는 무서워하지 않습니다.
PDF 출력 기능의 티켓을 끊어 다른 사람에게 돌려보내는 것은 이제 그만하자.
이제 그만하자
Reference
이 문제에 관하여(PHP로 PDF를 만들 때는 wkhtmltopdf + snappy로 싸워라.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/morisuke/items/b9c18dcba99ba6501d6e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)