Я использую UIMarkupTextPrintFormatter
напечатать некоторый HTML из моего приложения. Он отлично работает, если я разрешаю печатать форматирование на всю страницу.Как получить точный PAGECOUNT от UIPrintFormatter
Но я хочу, чтобы ограничить форматировщик для печати на одной половине страницы - и для достижения этой цели я поставил contentInsets
свойство, как только я знаю, размер бумаги (я установил contentInsets когда UIPrintInteractinControllerDelegate
метод - (UIPrintPaper *)printInteractionController: (UIPrintInteractionController *)pic choosePaper:(NSArray *)paperList
называется.)
Это тоже работает - печать правильно ограничена областью страницы, определенной с помощью содержимогоInsets.
Но количество напечатанных страниц неправильно. Количество страниц, которые я получаю, похоже на то, что задание на печать использовало контент contentInsets по умолчанию (0,0,0,0).
Как я могу получить его, чтобы напечатать нужное количество страниц? И почему свойство pageCount
на UIMarkupTextPrintFormatter
всегда возвращает 0?
Вот печатающая настроечный код вакансии:
UIPrintInteractionController* pic = [UIPrintInteractionController sharedPrintController];
pic.delegate = self;
UIPrintInfo* pi = [UIPrintInfo printInfo];
pi.orientation = UIPrintInfoOrientationLandscape;
pi.outputType = UIPrintInfoOutputGrayscale;
pi.duplex = UIPrintInfoDuplexNone;
pic.printInfo = pi;
UIMarkupTextPrintFormatter* mtpf = [[UIMarkupTextPrintFormatter alloc] initWithMarkupText: myHTML ];
pic.printFormatter = mtpf;
[pic presentAnimated: YES completionHandler:^(UIPrintInteractionController *printInteractionController, BOOL completed, NSError *error)
{
}];
и метод делегата:
- (UIPrintPaper *)printInteractionController: (UIPrintInteractionController *)pic choosePaper:(NSArray *)paperList
{
// we want letter paper
UIPrintPaper* printPaper = [UIPrintPaper bestPaperForPageSize: CGSizeMake(612 , 792) withPapersFromArray: paperList];
UIMarkupTextPrintFormatter* mtpf = (UIMarkupTextPrintFormatter*)pic.printFormatter;
CGFloat padding = (printPaper.paperSize.height - printPaper.printableRect.size.height)/2.0;
mtpf.contentInsets = UIEdgeInsetsMake(0, 0, 0, (printPaper.printableRect.size.height/2.0) + padding);
// always 0 ???
NSLog(@"pageCount: %d", mtpf.pageCount);
return printPaper;
}