Настройка страниц для печати для UIPrintPageRenderer / UIPrintInteractionController

У меня есть строка HTML для печати с использованием AirPrint в моем приложении iOS. Тем не менее, строка настраивается, и пользователю разрешено устанавливать поля / отступы, шрифт / размер шрифта, ориентацию и т. Д.

Таким образом, иногда вывод может быть более 2 страниц, где вторая страница пуста. Там я хочу установить диапазон страниц для печати. На самом деле, я просто хочу напечатать только первую страницу независимо от того, какой вывод.

Вот диалоговое окно контроллера взаимодействия с печатью, вы можете видеть, что диапазон не задан, а результат - более одной страницы:

UIPrintInteractionController Dialog

И вот мой код:

// 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 метод сделает свое дело. Есть идеи по поводу этого?

1 ответ

Решение

Если вы хотите использовать пользовательский подкласс UIPrintPageRendererесть также numberOfPages Метод, который вы можете изменить, чтобы рассчитать количество страниц. Тем не менее, я считаю, что вы можете просто забыть установить UIPrintInteractionController имущество showsPageRange в YES,

Я решил это, написав свой HTML в PDF (NSData) и настройка printingItem свойство этого элемента. Мой код в target-c, но применяется тот же принцип.

печать документации

Генерация PDF-контента

Другие вопросы по тегам