我有一个自定义UIPrintPageRender
,它使用html生成pdf报告。
我发现最终渲染的html不会消耗我传递的计算高度,因为pageRender的contentHeight在标题和正文内容之间留下了空白。
在我的测试中,我发现随着html内容的增长,这个空白区域会增加。
传递给drawHeaderForPageAtIndex:inRect:
的rect的高度是正确的。我甚至用它来绘制标题的底部(即使我有一个拼写错误,它在屏幕截图中显示了页脚)。
我还使用javascript来计算html内容高度,它还显示了预期的高度,也可以与左侧的页面标尺进行比较。
你可以看到,在下面的图像中,渲染的html不会消耗标题的完整高度,留下额外的间距。
我附上了original image here! (不是缩略图)更好地说明问题。
有没有人在遇到此问题之前或者在绘制标题时知道我做错了什么?
更新
我现在已经简化了我的测试以排除页眉/页脚仅绘制正文,我看到的结果相同。
UIWebViewPrintFormatter
和UIMarkupTextPrintFormatter
似乎会将内容垂直缩小20%。在下面的输出中,您可以看到doc高度为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}}