2014-12-02 4 views
2

[UIPrintPageRenderer drawPageAtIndex : inRect :]를 사용하여 네 개의 webView를 pdf로 변환하려고합니다. 그러나 iOS 8.1.1에서는이 지점에 도달하면 중단됩니다. 오류 메시지가 없으며 계속 시도하면 코드가 계속 중단됩니다. 다른 사람이이 문제를보고이 문제를 해결할 방법을 찾았습니까?iOS 8.1.1 drawPageAtIndex가 응답하지 않습니다.

렌더러에서 paperRect 및 printableRect를 설정하면 멈춤이 발생합니다. 해당 행을 밖으로두면 앱이 멈추지 않지만 결과 PDF는 비어 있습니다.

int i = 0; 
UIPrintPageRenderer *renderer = [[UIPrintPageRenderer alloc] init]; 
for(UIWebView *webView in webViews) { 
    [renderer addPrintFormatter:webView.viewPrintFormatter startingAtPageAtIndex:i++]; 
} 
CGRect paperRect = CGRectMake(0, 0, 612, 792); 
CGRect printableRect = CGRectInset(paperRect, 20, 20); 
[renderer setValue:[NSValue valueWithCGRect:paperRect] forKey:@"paperRect"]; 
[renderer setValue:[NSValue valueWithCGRect:printableRect] forKey:@"printableRect"]; 

NSMutableData *pdfData = [NSMutableData data]; 
// Render the html into a PDF 
UIGraphicsBeginPDFContextToData(pdfData, CGRectZero, nil); 
for (NSInteger i=0; i < [renderer numberOfPages]; i++) 
{ 
    UIGraphicsBeginPDFPage(); 
    CGRect bounds = UIGraphicsGetPDFContextBounds(); 
    [renderer drawPageAtIndex:i inRect:bounds]; <-- Hangs here 
} 
UIGraphicsEndPDFContext(); 
+0

와일드 루프 내에서 주 스레드에서 집중적 인 기능을 수행하려고합니다. 대신 NSOperationQueue를 사용해보십시오. –

+0

위의 코드를 업데이트했습니다. 위의 코드는 iOS 7.1에서 정상적으로 실행됩니다. iOS 8.1에서는 코드가 중단됩니다. 렌더러에서 paperRect 및 printableRect를 설정하기위한 호출을 제거하면 코드가 iOS 8.1에 멈추지 않지만 결과 PDF는 비어 있습니다. – DCG

답변

4

나는이 문제에 실행할 수있는 다른 사람이를 게시하도록하겠습니다 : 여기

코드 (업데이트)입니다. 이 중단은 Xcode에서 예외 중단 점이 활성화되어 예외가 발생했기 때문에 발생했습니다. 예외는 [UIPrintPageRenderer drawPageAtIndex : inRect :] 구현 내에서 분명히 발생했습니다. 이 예외는 무시할 수 있으며 코드는 예상대로 계속됩니다.

+0

와우, 무슨 구호, 이건 나를 위해 PDF 렌더링을 죽일려고 :-) – WrightsCS