2

--disable-smart-shrinking を使用すると、wkhtmltopdf でフォント サイズの問題が発生します。

このフラグが実際にコンテンツを拡大するのか縮小するのかはわかりません。ただし、ヘッダーで同じことを行っていないことは明らかです。

ユーザーが独自のフォームをデザインできるようにしているため、特定のフォント サイズがヘッダーであろうと本文であろうと同じであることが不可欠です。--disable-smart-shrinking を使用することも非常に重要です。これにより、コンテンツがページ全体をうまく埋めることができます。

次のコードで簡単なサンプル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 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

結果 (スマートシュリンクを有効にする):

スマートシュリンクを有効にする

H3 要素のフォント サイズは、ヘッダーと本文の間で同じままになりました

質問: --disable-smart-shrinking を使用すると、ページの幅全体を使用する PDF を作成したいと考えています。ただし、ヘッダーに適用されるフォントと同じサイズが必要です。誰かがこれを行うための解決策を持っていますか? 私たちは何か悪いことをしていますか?

4

1 に答える 1

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 < ../wkhtmltopdf_smart_shrinking_header_footer_disable_fix.patch

このソリューションは、Windows/Linux で機能します。正確な (html の 1mm が pdf の 1mm に等しい) レンダリングを取得するには、オプション "--disable-smart-shrinking --dpi 96" を指定して wkhtmltopdf を実行する必要があります。

Mac OS X では、"--enable-smart-shrinking" および HTML 本文の "body { width: 210mm }" の css スタイルを使用して、正確なレンダリングを行うことができます。このソリューションは、Mac OS X でのみ機能します。

于 2013-12-29T23:28:23.983 に答える