使用whtmltopdf的disable-smart-shrinking不会影响标题字体大小

时间:2012-05-08 08:52:28

标签: pdf pdf-generation font-size wkhtmltopdf

使用--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让我们。但我们希望将字体上的相同大小应用于标题。有没有人有解决方案呢?我们做错了吗?

1 个答案:

答案 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。