#ios #objective-c #pdf #uiwebview #uigraphicscontext
#iOS #objective-c #PDF #uiwebview #uigraphicscontext
Вопрос:
Я пытаюсь создать PDF-файл с большим количеством данных. PDF содержит 7 страниц, текст, изображения и диаграммы и пока работает нормально. Теперь мне нужно добавить html-таблицу на одну из страниц PDF-файлов. В этом ViewController я добавил WebView и попробуйте загрузить данные в фоновом режиме, а затем распечатать их в файл. При представлении ViewController WebView загружает страницу. Но мне нужно, чтобы он загружался, когда он не представлен, моя текущая проблема заключается в том, что UIWebView остается белым в PDF-файле: webViewDidStartLoad:(UIWebView *)webView
не вызывается.
Код VC1:
PDFPage6ViewController *pdf2 = [self.storyboard instantiateViewControllerWithIdentifier:@"PDF6"];
pdf2.controlIdentifier = controlIdentifier;
pdf2.startDate = startDate;
pdf2.endDate = endDate;
UIGraphicsBeginPDFContextToData(pdfData, CGRectZero,nil);
CGContextRef pdfContext=UIGraphicsGetCurrentContext();
UIGraphicsBeginPDFPage();
[pdf2.view.layer renderInContext:pdfContext];
UIGraphicsEndPDFContext();
Код PDF2:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
[self getDataFromDatabase];
}
- (void)getDataFromDatabase {
/*loading data*/
[self processData];
}
- (void)processData {
/*doing some calculations*/
NSString *html = /*creating the html string*/
[webView loadHTMLString:html baseURL:nil];
}
Комментарии:
1. Установили ли вы для делегата UIWebView значение self?
2. Да, делегат установлен на 2-й VC
3. Как насчет ProcessData? Вызывается ли он?
4. Вы должны создать PDF в webViewDidFinishLoad:.
5. Да, это так. Если я представлю PDF VC, WebView правильно загрузит html-таблицу, затем будут вызваны ProcessData и webViewDidStartLoad: (UIWebView *)WebView. Если я не представляю VC, ProcessData тоже вызывается. Не будет загружаться только WebView