作業環境
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>