wkhtmltopdf - 升级 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、Bold 和 Regular 进行渲染)
渲染代码:
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
推荐阅读
- javascript - 为什么 myCheckBox.onclick = myFunction(); 无法正常工作,但 myCheckBox.onclick = function(){ myFunction();} 是?
- jquery - 如何将错误消息返回给 Ajax 调用
- python - python读取CLOB数据
- asp.net - 如何获得 ASPX 特定的 Intellisense 并突出显示具有自定义扩展名的文件?
- ruby - 如何读取多个 XML 文件,然后输出到具有相同 XML 文件名的多个 CSV 文件
- excel - Excel 将品牌/型号/年份范围转换为单独的年份/品牌/型号行
- php - PHP FTP 脚本本身可以工作,但在作为 WordPress 插件的一部分时会失败
- python - Pandas Python:附加数据框 - 文本
- python - 如何使用机器学习将方向传感器数据转换为运动事件?
- symfony - 如何设置对 symfony 的访问