我正在生成一个多页 html 文档,我想从我的应用程序发送到 Airprint 打印机。每页都是离散的,必须从它自己的工作表开始。
这应该比较简单——每个页面的内容后面紧跟着一个div
元素有display: block; page-break-after: always;
下面是一个简单的例子:
<html>
<head>
<title>Printing with Page Breaks</title>
<style type="text/css">
@media screen or print {
div.pageb { display: block; page-break-after: always; }
}
</style>
</head>
<body>
<h1>Page 1</h1>
<p>Lorem ipsum dolor sit amet...</p>
<div class="pageb"></div> <!-- should page break here! -->
<h1>Page 2</h1>
<p>Lorem ipsum dolor sit amet...</p>
<div class="pageb"></div> <!-- should page break here! -->
<h1>Page 3</h1>
<p>Lorem ipsum dolor sit amet...</p>
<div class="pageb"></div> <!-- should page break here! -->
</body>
</html>
该文档可从 Safari 和 Chrome 完美打印,它们都将所有分页符放在应有的位置。然而,在 iOS 上,不会插入分页符。
要打印 html,我使用 aUIPrintInteractionController
来打印 a 的UIWebView
内容UIViewPrintFormatter
。像这样的东西:
UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController];
UIPrintInfo *printInfo = [UIPrintInfo printInfo];
printInfo.outputType = UIPrintInfoOutputGeneral;
controller.printInfo = printInfo;
UIWebView *webViewPrint = [[UIWebView alloc] init];
[webViewPrint loadHTMLString:printHTML baseUrl:@"/"];
UIViewPrintFormatter *viewFormatter = [webViewPrint viewPrintFormatter];
controller.printFormatter = viewFormatter;
controller.showsPageRange = NO;
[controller presentAnimated:YES completionHandler:completionHandler];
这一切似乎都很标准,我想知道为什么分页符在其他 Webkit 浏览器上正确打印,而不是 UIWebView。关于如何在 iOS 上进行分页的任何想法?