Я использую UIMarkupTextPrintFormatter
для печати HTML-кода из своего приложения. Это прекрасно работает, если я позволяю форматировщику печати печатать на всю страницу.
Но я хочу ограничить средство форматирования печатью на одной половине страницы, и для этого я устанавливаю свойство contentInsets
, когда мне известен размер бумаги (я устанавливаю contentInsets при вызове метода UIPrintInteractinControllerDelegate
- (UIPrintPaper *)printInteractionController: (UIPrintInteractionController *)pic choosePaper:(NSArray *)paperList
).
Это тоже работает — печать правильно ограничена областью страницы, определенной с помощью 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;
}