我有一个UIPrintPageRender
使用 html 生成 pdf 报告的自定义。
我发现最终呈现的 html 不会消耗我作为 pageRender 的 contentHeight 传递的计算高度,在标题和正文内容之间留下一个空白区域。
在我的测试中,我发现这个空白空间随着 html 内容的增长而增加。
传递给的矩形的高度drawHeaderForPageAtIndex:inRect:
是正确的。我什至用它来绘制页眉的底部(即使我有一个错字并且在屏幕截图中显示页脚)。
我还使用 javascript 来计算 html 内容高度,它还显示了预期的高度,可以与左侧的页面标尺进行比较。
您可以在下面的图像中看到呈现的 html 不会占用标题的整个高度,从而留下额外的间距。
我在这里附上了原图!(不是缩略图)更好地说明问题。
有没有人遇到过这个问题或者知道我在绘制标题时做错了什么?
更新:
我现在简化了我的测试以排除页眉/页脚仅绘制正文,我看到了相同的结果。
看起来UIWebViewPrintFormatter
和UIMarkupTextPrintFormatter
都会将内容垂直缩小 20%。在下面的输出中,您可以看到 220 像素的文档高度,但格式化程序输出约为 176 像素。
如果我使用 into body 绘制图像,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}}