UIPrintPageRender
HTMLを使用してPDFレポートを生成するカスタムがあります。
私が見つけたのは、最終的にレンダリングされた html が、pageRender の contentHeight として渡した計算された高さを消費せず、ヘッダーと本文のコンテンツの間に空白が残っていることです。
私のテスト中に私が見つけたのは、html コンテンツが大きくなるにつれて、この空白スペースが増えるということです。
渡された四角形の高さdrawHeaderForPageAtIndex:inRect:
は正しいです。これを使用して、ヘッダーの下部を描画することもできます (タイプミスがあり、スクリーンショットにフッターと表示されています)。
また、javascript を使用して HTML コンテンツの高さを計算すると、左側のページ ルーラーと比較できる予想される高さも表示されます。
下の画像では、レンダリングされた html がヘッダーの高さ全体を消費せず、余分なスペースが残っていることがわかります。
ここに元の画像を添付しました!(サムネイルではありません)問題をよりよく説明するために。
以前にこの問題に遭遇した人はいますか、ヘッダーを描画するときに何が間違っているのか知っていますか?
更新:
本文のみを描画するヘッダー/フッターを除外するようにテストを単純化したところ、同じ結果が表示されました。
UIWebViewPrintFormatter
との両方が表示UIMarkupTextPrintFormatter
され、コンテンツが垂直方向に 20% 縮小されます。以下の出力では、ドキュメントの高さが 220px ですが、フォーマッタの出力は ~176px です。
を使用して本文に画像を描画するとUIViewPrintFormatter
、高さが正しいため、ページレンダラー自体に奇妙なことは何もありません。
webViewDidFinishLoad: ドキュメントの高さ: 220.00
pdf ページ サイズ: {595.44006, 841.67999}
SATestPageRendererInit pageRect: {{0, 0}, {595.44006, 841.67999}}, pageMargin: {0, 0, 0, 0}
printableRect: {{0, 0 }, {595.44006, 841.67999}}
pdfContextAddPage: 0 - pageRect: {{0, 0}, {595.44006, 841.67999}}
drawPageAtIndex: 0 inRect: {{0, 0}, {595.44006, 841.67999}}
drawPrintFormatter: forPageIndex: 0 printFormatterRect: {{0, 0}, {595.44006, 176.07098}}