UIMarkupTextPrintFormatter
을 사용하여 내 응용 프로그램에서 일부 HTML을 인쇄하고 있습니다. 인쇄 포맷터를 전체 페이지로 인쇄하면 멋지게 작동합니다.UIPrintFormatter에서 정확한 pageCount를 얻는 방법
하지만 페이지의 절반에 인쇄에 포매터를 제한 할 수 - 내가 용지 크기를 (. UIPrintInteractinControllerDelegate
방법 - (UIPrintPaper *)printInteractionController: (UIPrintInteractionController *)pic choosePaper:(NSArray *)paperList
가 호출 될 때 나는 contentInsets 설정) 알면 내가 contentInsets
속성을 설정 이러한 목표를 달성하기 위해
이 방법도 사용할 수 있습니다. 인쇄는 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)
{
}];
및 대리자 방법 : 당신은 UIPrintPageRenderer의 하위 클래스를 작성해야
- (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;
}