我使用UIMarkupTextPrintFormatter
從我的應用打印一些HTML。如果我讓打印格式化程序打印到整個頁面,它會很好用。如何從UIPrintFormatter獲得精確的pageCount
但我想限制在頁面的一半格式打印 - 而實現這一點我設置contentInsets
屬性一旦我知道紙張的尺寸(我設置contentInsets當UIPrintInteractinControllerDelegate
方法- (UIPrintPaper *)printInteractionController: (UIPrintInteractionController *)pic choosePaper:(NSArray *)paperList
被調用。)
這也適用 - 打印正確地限制到使用contentInsets定義的頁面區域。
但是打印頁數是錯誤的。我得到的頁數好像打印作業一直使用默認的contentInsets(0,0,0,0)。
我怎樣才能打印正確的頁數?爲什麼UIMarkupTextPrintFormatter
上的pageCount
屬性總是返回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;
}