将UIWebView呈现为图像/ PDF具有视觉工件

时间:2011-09-28 15:38:51

标签: iphone ios uiwebview pdf-generation

我将UIWebView的图层渲染到图形上下文中,然后使用UIGraphicsBeginPDFPageWithInfo()函数系列将其包含在PDF中。

我的问题是输出包含一组额外的灰线,这些灰线不属于我的数据集。我希望有人可以了解他们来自哪里。

下面列出了输出的一个例子。正在呈现的HTML文档只包含文本“这是测试” - 您看到的框来自某处的渲染过程。在屏幕上呈现时,它只是白色屏幕上的黑色文字 - 没有线条/框。

任何人都有任何想法发生了什么?谢谢!

以下是我用来将此网页视图呈现为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

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。只要尝试将UIWebView呈现到PDF上下文中,就会发生这种情况,并且帧宽度> 512.我无法诊断确切的问题,但通过将UIWebView渲染为UIImage,然后将UIImage渲染到pdf上下文来解决它。

代码为:

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

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)];