2

iOS アプリで AirPrint を使用して印刷する HTML 文字列があります。ただし、文字列はカスタマイズ可能で、ユーザーはマージン/パディング、フォント/フォント サイズ、向きなどを設定できます。

したがって、出力が 2 ページを超えて、2 ページ目が空白になる場合があります。そこで、印刷するページの範囲を設定したいと思います。実際、出力が何であれ、最初のページだけを印刷したいだけです。

以下は印刷インタラクション コントローラーのダイアログです。範囲が設定されておらず、出力が複数のページになっていることがわかります。

UIPrintInteractionController ダイアログ

そして、ここに私のコードがあります:

// create an html output text
let markupText = "<div style='width: 100%; text-align: center;'><div style='display: inline-block; margin-top: 35mm; margin-left: 45mm;'>Hello, printer.</div></div>"

// initialize print formatter
let formatter = UIMarkupTextPrintFormatter(markupText: markupText)
formatter.contentInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
formatter.startPage = 0

// initialize print renderer and set its formatter
let printRenderer = UIPrintPageRenderer()
printRenderer.addPrintFormatter(formatter, startingAtPageAtIndex: 0)
printRenderer.prepareForDrawingPages(NSMakeRange(0, 1))

// initialize print controller to present print dialog
let printController = UIPrintInteractionController.sharedPrintController()
printController.printPageRenderer = printRenderer
printController.presentAnimated(true, completionHandler: nil)

prepareForDrawingPagesメソッドでうまくいくと思っていましたが、範囲の設定に関する十分な情報を見つけることができませんでした。これを達成するためのアイデアはありますか?

4

1 に答える 1

2

のカスタム サブクラスを使用する場合は、ページ数を計算するためにオーバーライドできるメソッドUIPrintPageRendererもあります。ただし、プロパティをnumberOfPagesに設定するのを忘れているだけかもしれません。UIPrintInteractionControllershowsPageRangeYES

HTMLをPDFに書き込み(NSData)、printingItemプロパティをその項目に設定することでこれを解決しました。私のコードは Objective-C ですが、同じ原則が適用されます。

印刷アイテムのドキュメント

PDF コンテンツの生成

于 2016-01-19T18:41:08.243 に答える