objective-c – 打印WKWebView(OS X)的内容

我正在尝试打印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");
    }];
}

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...