2012-02-08 4 views
2

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; 
} 

답변

0

다음은 인쇄 작업 설정 코드입니다. numberOfPages 하위 클래스의 printFormatter에 다양한 메트릭을 설정하면 정확한 페이지 수를 얻을 수 있습니다. See my long answer with example code located here. 정확히이 문제는 아니지만 인쇄 문제를 해결하려는 누군가가 얻고 자하는 많은 관련 질문에 답합니다.

관련 문제