作業環境
php7.1
phpwkhtmltopdf
概要
phpでPDFを生成しようとして戦っていた。
bootstrap入れて、phpwkhtmltopdfでpdfを生成したものの、横並びのdivがなぜか再現されていなくて困った。
効いているcssをbootstrapファイルに突っ込んで効いているか確かめたり、PDF変換前のデータをhtml保存したりして調べたところ、bootstrapのcol-*-*系クラスを横並びにしてくれているbox-sizingが効いてないっぽい。
$file = '/var/www/html/pre_pdf.html'; file_put_contents($file, $html);
やったこと
wkhtmltopdfをコマンドラインで叩いたときは確か効いていた(気がする)ので、間に噛ませているphpwkhtmltopdfのせいかなと思っていたけどよくわからない。
snappyは2014年の時点で実装しようとしてたみたいだけど、今使ってるphpwkhtmltopdfはとくに情報が見つからないので実装していないのかも?
横並びのCSSを一つずつ試したけど、flex-boxとdisplay: inline-boxは効かなったのでdisplay:tableで試したら横並びにできた。
pdf-*系のクラスを作ってpdf作成時のcssを上書きして整形してなんとかPDFにしている。
.pdf-flex-box{
display: table !important;
width: 100% !important;
}
.pdf-cell{
display: table-cell !important;
}
.col-sm-6{
width: 48% !important;
}
<div class="pdf-display-table"> <div class="col-sm-6 pdf-cell"> ■横並びにしたいdiv■ </div> <div class="col-sm-6 pdf-cell"> ■横並びにしたいdiv■ </div> </div>
