使用--disable-smart-shrinking时,我遇到wkhtmltopdf的字体大小问题。
我不确定这个标志是否会扩大内容或缩小内容。然而,很清楚的是它与标题没有做同样的事情。
当我们让用户设计他们自己的表单时,无论是在标题还是正文中,某些字体大小都必须相同。我们还发现使用--disable-smart-shrinking非常重要,因为这会使我们的内容很好地填满整个页面。
我使用以下代码生成了一个简单的samle html
<html>
<head>
</head>
<body style='margin: 0; border: 0'>
<h3>My H3 text</h3>
</body>
</html>
将其保存为test.html并使用disable-smart-shrinking标志运行wkhtmltopdf
wkhtmltopdf.exe --disable-smart-shrinking --no-outline --header-spacing 10 -T 20 --header-html test.html test.html c:\ temp \ disable_smart_shrinking.pdf
结果(disable-smart-shrinking):
disable-smart-shrinking http://img138.imageshack.us/img138/5143/disablesmartshrinking.th.png
请注意,正文中的H3在标题中大于H3。
wkhtmltopdf.exe --enable-smart-shrinking --no-outline --header-spacing 10 -T 20 --header-html test.html test.html c:\ temp \ disable_smart_shrinking.pdf
结果(enable-smart-shrinking):
enable-smart-shrinking http://img406.imageshack.us/img406/2104/enablesmartshrinking.th.png
H3-element的字体大小现在在标题和正文之间保持不变
问题:我们想创建一个使用页面整个宽度的pdf,其中--disable-smart-shrinking让我们。但我们希望将字体上的相同大小应用于标题。有没有人有解决方案呢?我们做错了吗?
答案 0 :(得分:4)
此补丁将禁用页眉/页脚的智能智能收缩:
diff --git a/src/lib/pdfconverter.cc b/src/lib/pdfconverter.cc
index e815758..1504a14 100644
--- a/src/lib/pdfconverter.cc
+++ b/src/lib/pdfconverter.cc
@@ -482,6 +482,7 @@ void PdfConverterPrivate::endPage(PageObject & object, bool hasHeaderFooter, int
if (!object.headers.empty()) {
QWebPage * header = object.headers[objectPage];
+ updateWebSettings(header->settings(), object.settings.web);
painter->save();
painter->resetTransform();
double spacing = s.header.spacing * printer->height() / printer->heightMM();
@@ -506,6 +507,7 @@ void PdfConverterPrivate::endPage(PageObject & object, bool hasHeaderFooter, int
if (!object.footers.empty()) {
QWebPage * footer = object.footers[objectPage];
+ updateWebSettings(footer->settings(), object.settings.web);
painter->save();
painter->resetTransform();
double spacing = s.footer.spacing * printer->height() / printer->heightMM();
}
/*!
应用补丁: patch -l -p1&lt; ../ wkhtmltopdf_smart_shrinking_header_footer_disable_fix.patch
此解决方案适用于Windows / Linux。要获得精确的(1英寸html等于1毫米pdf)渲染你需要运行wkhtmltopdf选项“--disable-smart-shrinking --dpi 96”
在Mac OS X上,可以使用“--enable-smart-shrinking”和html body“body {width:210mm}”上的css样式进行精确渲染。此解决方案仅适用于mac os x。