アプリから Airprint プリンターに送信したい複数ページの HTML ドキュメントを生成しています。各ページは個別であり、独自のシートから開始する必要があります。
これは比較的単純なはずです。各ページのコンテンツの直後に次のような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 で改ページを行う方法についてのアイデアはありますか?