我在iOS应用中使用AirPrint打印了一个HTML字符串。但是,字符串是可自定义的,用户可以设置边距/填充,字体/字体大小,方向等。
因此,有时输出可以超过2页,其中第二页是空白的。在那里,我想为要打印的页面设置范围。实际上,无论输出是什么,我只想打印第一页。
这是打印交互控制器对话框,您可以看到没有设置范围,输出超过一页:
这是我的代码:
// 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
方法可以解决问题。关于完成这个的任何想法?
答案 0 :(得分:1)
如果要使用UIPrintPageRenderer
的自定义子类,还可以覆盖numberOfPages
方法来计算页数。但是,我相信您可能忘记将UIPrintInteractionController
属性showsPageRange
设置为YES
。
我通过将html写入PDF(NSData
)并将printingItem
属性设置为该项来解决此问题。我的代码在objective-c中,但同样的原则适用。