私のテンプレートx.pdf.erbサイトで、すべてのスタイルシートとJavaScriptタグをリンクしました。
<%= wicked_pdf_stylesheet_link_tag "bootstrap.css" -%>
<%= wicked_pdf_stylesheet_link_tag "style.css" -%>
<%= wicked_pdf_stylesheet_link_tag "styleUmowa.css" -%>
<%= wicked_pdf_stylesheet_link_tag "animate.css" -%>
<%= wicked_pdf_javascript_include_tag "application" %>
Pdfサイトが生成されると、bootstrapグリッドシステムを除くすべてが良好です。つまり、邪悪なpdfは次のものを無視します。
<div class="container">
<div class="row">
<div class="col-lg-4"></div>
<div class="col-lg-4"></div>
<div class="col-lg-4"></div>
</div>
</div>
つまり、bootstrap gridのない通常のdivのように表示されます。これを手伝ってくれませんか?
私は同じ問題に遭遇しました。いくつかの解決策があります:
wkhtmltopdf
バイナリからバージョン> = 0.12に、次に:viewport_size
オプションを追加して、次のようにレンダリングします。respond_to do |format|
format.html
format.pdf do
render pdf: "my_pdf",
viewport_size: '1280x1024'
end
end
col-xs-*
クラスを使用することもできますpdf.css.scss
(bootstrap-sassを使用しています)を作成します。@import "bootstrap/variables";
@import "bootstrap/mixins";
@include make-grid(sm);
@include make-grid(md);
@include make-grid(lg);
<%= wicked_pdf_stylesheet_link_tag "pdf.css" -%>
に含めることを忘れないでください
プレーンなcssの場合、.col-sm-*
ラッパーなしで、bootstrap.cssから.col-md-*
、.col-lg-*
、@media
のすべてのルールをpdf.cssにコピーして貼り付ける必要があります。これは重要です。
KnpLabs/snappy を使用している場合は、ビューポートをオプションとして指定すると状況が修正されます。
$snappy->setOption('viewport-size','1280x1024');
上記のソリューションは、Bootstrap 4の時点では機能しません。Bootstrap 4のグリッドシステムは、wicked_pdfでサポートされていないflexboxを使用して構築されています。 、wkhtmltopdfに依存しているため。
Bootstrap 4を使用しているときに単純なグリッドを機能させるには、width w-*
コマンドを使用して独自のグリッドを定義し、d-*
コマンドを表示して、 display: flex
設定を無効にします。
例:
<div class="container">
<div class="row d-table-row">
<div class="col w-25 d-table-cell"></div>
<div class="col w-25 d-table-cell"></div>
<div class="col w-25 d-table-cell"></div>
<div class="col w-25 d-table-cell"></div>
</div>
</div>
注:デフォルトでは、25、50、75、100%の幅のみがサポートされています。独自の追加の幅定義をブートストラップの$sizes
変数に追加することにより、次のようなものをscssスタイルシートに追加して、柔軟性を高めることができます。
// _custom.scss
@import "bootstrap/functions";
@import "bootstrap/variables";
$sizes: map-merge((20: 20%, 33: 33.33%, 40: 40%, 60: 60%, 67: 66.67%, 80: 80%), $sizes);
@import "bootstrap";
// Your CSS
幅と表示クラスの使用:
https://getbootstrap.com/docs/4.0/utilities/display/
https://getbootstrap.com/docs/4.0/utilities/sizing/
ブートストラップ4 flexbox grid and wkhtmltopdf: