Визуализация UIWebView как изображения / PDF имеет визуальные артефакты - PullRequest
1 голос
/ 28 сентября 2011

Я рендерил слой 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 голосов
/ 24 мая 2013

Я столкнулся с той же проблемой. Это происходит всякий раз, когда вы пытаетесь визуализировать UIWebView в контексте PDF с шириной кадра> 512. Я не смог диагностировать точную проблему, но обошел ее, преобразовав UIWebView в UIImage, а затем отобразив UIImage в pdf контекст.

Код как:

UIGraphicsBeginPDFPageWithInfo (CGRectMake (0, 0, ширина кВт, высота), ноль);

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)];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...