Есть ли любой способ получить содержание a UIWebView
и преобразуйте его в файл PNG или PDF? Я хотел бы получить подобный вывод к этому доступному на Mac путем нажатия кнопки PDF при печати от Safari, например. Я предполагаю, что это еще не возможный/создает в, но надо надеяться я буду удивлен и найду способ получить содержание от webview до файла.
Спасибо!
Вы можете использовать следующую категорию в UIView для создания файла PDF:
#import <QuartzCore/QuartzCore.h>
@implementation UIView(PDFWritingAdditions)
- (void)renderInPDFFile:(NSString*)path
{
CGRect mediaBox = self.bounds;
CGContextRef ctx = CGPDFContextCreateWithURL((CFURLRef)[NSURL fileURLWithPath:path], &mediaBox, NULL);
CGPDFContextBeginPage(ctx, NULL);
CGContextScaleCTM(ctx, 1, -1);
CGContextTranslateCTM(ctx, 0, -mediaBox.size.height);
[self.layer renderInContext:ctx];
CGPDFContextEndPage(ctx);
CFRelease(ctx);
}
@end
Плохие новости: UIWebView не создает красивых форм и текста в PDF, но отображает себя как изображение в PDF.
Создать изображение из веб-просмотра просто:
UIImage* image = nil;
UIGraphicsBeginImageContext(offscreenWebView_.frame.size);
{
[offscreenWebView_.layer renderInContext: UIGraphicsGetCurrentContext()];
image = UIGraphicsGetImageFromCurrentImageContext();
}
UIGraphicsEndImageContext();
Получив изображение, вы можете сохранить его как PNG.
Создание PDF-файлов также возможно очень похожим способом, но только в еще не выпущенной версии iPhone OS.
@mjdth, попробуйте вместо этого fileURLWithPath: isDirectory:
. URLWithString
у меня тоже не работал.
@implementation UIView(PDFWritingAdditions)
- (void)renderInPDFFile:(NSString*)path
{
CGRect mediaBox = self.bounds;
CGContextRef ctx = CGPDFContextCreateWithURL((CFURLRef)[NSURL fileURLWithPath:path isDirectory:NO], &mediaBox, NULL);
CGPDFContextBeginPage(ctx, NULL);
CGContextScaleCTM(ctx, 1, -1);
CGContextTranslateCTM(ctx, 0, -mediaBox.size.height);
[self.layer renderInContext:ctx];
CGPDFContextEndPage(ctx);
CFRelease(ctx);
}
@end