2011-09-28 86 views
1

我將UIWebView的圖層渲染爲圖形上下文,然後使用UIGraphicsBeginPDFPageWithInfo()系列函數將其包含在PDF中。將UIWebView渲染爲圖像/ PDF具有視覺僞像

我的問題是,輸出包括一組額外的灰線,不是我的數據集的一部分。我希望有人能夠說明他們來自哪裏。

輸出示例如下。正在呈現的HTML文檔除了文本「這就是測試」之外什麼也不包含 - 你看到的盒子來自某處的渲染過程。在屏幕上呈現時,它只是白色屏幕上的黑色文本 - 沒有行/框。

任何人有任何想法發生了什麼?謝謝!

下面是我使用呈現此Web視圖作爲PDF的代碼:

NSMutableData *pdfData = [NSMutableData data]; 

UIGraphicsBeginPDFContextToData(pdfData, CGRectZero, nil); 
CGRect viewBounds = webView.bounds; 

UIGraphicsBeginPDFPageWithInfo(viewBounds, nil); 

CGContextRef pdfContext = UIGraphicsGetCurrentContext(); 
[webView.layer renderInContext:pdfContext]; 

UIGraphicsEndPDFContext(); 

而且,這裏是我所看到的輸出的屏幕截圖:

enter image description here

+0

可以共享數據集(樣本pdf)文件嗎? – nhisyam

回答

0

我遇到了同樣的問題。每當試圖將UIWebView渲染到PDF上下文並且幀寬> 512時,就會發生這種情況。我無法診斷確切的問題,但是通過將UIWebView渲染爲UIImage,然後將UIImage渲染爲pdf上下文。

代碼爲:

UIGraphicsBeginPDFPageWithInfo(CGRectMake(0,0,kWidth,kHeight),無);

CGContextRef currentContext = UIGraphicsGetCurrentContext();

UIImage* image = nil; 
UIGraphicsPushContext(currentContext); 
UIGraphicsBeginImageContext(self.webview.frame.size); 
{ 
    [self.webview.layer renderInContext: UIGraphicsGetCurrentContext()]; 
    image = UIGraphicsGetImageFromCurrentImageContext(); 
} 
UIGraphicsEndImageContext(); 
UIGraphicsPopContext(); 

[image drawInRect:CGRectMake(0, 0, kWidth, kHeight)];