我正在使用 aUIMarkupTextPrintFormatter
从我的应用程序中打印一些 HTML。如果我让打印格式化程序打印到整个页面,效果会很好。
但是我想将格式化程序限制为在页面的一半上打印 - 为了实现这一点,我在contentInsets
知道纸张大小后设置了属性(我在调用该UIPrintInteractinControllerDelegate
方法时设置了 contentInsets - (UIPrintPaper *)printInteractionController: (UIPrintInteractionController *)pic choosePaper:(NSArray *)paperList
。)
这也有效 - 打印正确地限制在使用 contentInsets 定义的页面区域。
但是打印的页数是错误的。我得到的页数就好像打印作业一直在使用默认的 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;
}