#iphone #ios #uiwebview #pdf-generation
#iPhone #iOS #UIWebView #pdf-генерация
Вопрос:
Я рендеринг слоя 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();
Кроме того, вот скриншот того, что я вижу для вывода:
Комментарии:
1. Можете ли вы поделиться файлом набора данных (образец pdf)?
Ответ №1:
Я столкнулся с той же проблемой. Это происходит всякий раз, когда вы пытаетесь отобразить 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)];