我正在尝试打印WkWebView的内容,但是当打印面板出现时,打印预览为空.
这是代码:
- (void)viewDidLoad {
[super viewDidLoad];
WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
_webView = [[WKWebView alloc] initWithFrame:self.webViewOutlet.frame configuration:config];
[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://www.google.com"]]];
[_webViewOutlet addSubview:_webView];
_webView.navigationDelegate = self;
}
我有一个WKWebView的插座,所以我可以看到它是否加载,我把打印调用放在didFinishNavigation代理方法,这样只是为了确保:
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation
{
[self.webView print:nil];
}
无论页面如何,打印预览始终是空白页面.我也尝试使用nsprintOperations,结果是一样的 – 打印预览和保存的PDF是空白页.
任何想法我做错了什么?是否有另一种打印/转换WKWebView到PDF的方法?欢迎提出建议.谢谢.
解决方法
您可以使用viewPrintFormatter打印WKWebView的内容.
以下是示例代码:
以下是示例代码:
if ([UIPrintInteractionController isPrintingAvailable])
{
uiprintinfo *pi = [uiprintinfo printInfo];
pi.outputType = uiprintinfoOutputGeneral;
pi.jobName = @"Print";
pi.orientation = uiprintinfoOrientationPortrait;
pi.duplex = uiprintinfoDuplexLongEdge;
UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController];
pic.printInfo = pi;
pic.showsPageRange = YES;
pic.printFormatter = self.webView.viewPrintFormatter;
[pic presentFromBarButtonItem:barButton animated:YES completionHandler:^(UIPrintInteractionController *printInteractionController,BOOL completed,NSError *error) {
if(error)
NSLog(@"handle error here");
else
NSLog(@"success");
}];
}