升级 WKHTMLTOPDF 后的布局问题
Layout issues after upgrading WKHTMLTOPDF
我以前看起来不错的所有布局现在都乱七八糟,升级后似乎用不同的小字体渲染 WKHTMLTOPDF
。全角 div 也比以前更小。
我试过在 wicked 中修改 dpi 标志,当设置为 dpi: 300
时,我看到了一个小差异,但差异似乎并没有解决问题,无论更改为 dpi
。有人有任何提示吗?很确定问题出在对 WKHTMLTOPDF
.
所做的更改
我们将这些版本锁定了一段时间,因为呈现的 PDF 看起来很棒:
wicked_pdf (1.1.0)
wkhtmltopdf-binary (0.9.9.3)
(使用字体 NimbusSansL Bold & Regular 渲染)
我们有一项新功能需要更好地处理长表格中的分页符。升级后分页效果很好,但现在我们有更多问题,这里是新版本:
wicked_pdf (1.2.2)
wkhtmltopdf-binary (0.12.4)
(现在使用 DejaVuSans、粗体和常规字体渲染)
渲染代码:
respond_to do |format|
format.html
format.pdf do
render pdf: 'report',
template: 'download_report.pdf.erb',
show_as_html: params[:debug].present?,
layout: 'report_application.pdf',
margin: {
top: 5,
bottom: 5,
left: 5,
right: 5
}
end
end
添加 zoom
选项似乎解决了我的大部分布局问题。受影响的 div 需要定义像素宽度。我通过将其中一个 div 的大小调整回其之前的渲染大小来确定缩放量。将新宽度除以旧宽度以获得缩放比例:
respond_to do |format|
format.html
format.pdf do
render pdf: 'report',
zoom: 1.27,
template: 'download_report.pdf.erb',
show_as_html: params[:debug].present?,
layout: 'report_application.pdf',
margin: {
top: 5,
bottom: 5,
left: 5,
right: 5
}
end
end
我以前看起来不错的所有布局现在都乱七八糟,升级后似乎用不同的小字体渲染 WKHTMLTOPDF
。全角 div 也比以前更小。
我试过在 wicked 中修改 dpi 标志,当设置为 dpi: 300
时,我看到了一个小差异,但差异似乎并没有解决问题,无论更改为 dpi
。有人有任何提示吗?很确定问题出在对 WKHTMLTOPDF
.
我们将这些版本锁定了一段时间,因为呈现的 PDF 看起来很棒:
wicked_pdf (1.1.0)
wkhtmltopdf-binary (0.9.9.3)
(使用字体 NimbusSansL Bold & Regular 渲染)
我们有一项新功能需要更好地处理长表格中的分页符。升级后分页效果很好,但现在我们有更多问题,这里是新版本:
wicked_pdf (1.2.2)
wkhtmltopdf-binary (0.12.4)
(现在使用 DejaVuSans、粗体和常规字体渲染)
渲染代码:
respond_to do |format|
format.html
format.pdf do
render pdf: 'report',
template: 'download_report.pdf.erb',
show_as_html: params[:debug].present?,
layout: 'report_application.pdf',
margin: {
top: 5,
bottom: 5,
left: 5,
right: 5
}
end
end
添加 zoom
选项似乎解决了我的大部分布局问题。受影响的 div 需要定义像素宽度。我通过将其中一个 div 的大小调整回其之前的渲染大小来确定缩放量。将新宽度除以旧宽度以获得缩放比例:
respond_to do |format|
format.html
format.pdf do
render pdf: 'report',
zoom: 1.27,
template: 'download_report.pdf.erb',
show_as_html: params[:debug].present?,
layout: 'report_application.pdf',
margin: {
top: 5,
bottom: 5,
left: 5,
right: 5
}
end
end