我正在尝试使用[UIPrintPageRenderer drawPageAtIndex: inRect:]将四个webViews转换为PDF。但是,在iOS 8.1.1上,当它到达这一点时,它会挂起。没有错误消息,并且如果我尝试继续,代码仍然会在此处中断。有人遇到过这个问题并找到了解决方法吗?
当我在渲染器上设置paperRect和printableRect时,它会导致挂起。如果我省略这些行,则应用程序不会挂起,但生成的PDF为空白。
以下是更新后的代码:
当我在渲染器上设置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();