uiWebView打印pdf

uiWebView打印pdf,pdf,iframe,printing,uiwebview,Pdf,Iframe,Printing,Uiwebview,在uiwebview内部,打印pdf文档的好方法是什么 pdf可以通过url访问,也可以加载到iframe中 使用标准javascript widnow.print()函数将无法工作 我正在考虑使用javascript桥,例如: - (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigatio

在uiwebview内部,打印pdf文档的好方法是什么

pdf可以通过url访问,也可以加载到iframe中

使用标准javascript widnow.print()函数将无法工作

我正在考虑使用javascript桥,例如:

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
    NSURL *URL = [request URL]; 

    if ([[URL scheme] isEqualToString:@"native"]) { 
        NSString *urlString = [[request URL] absoluteString];
        NSArray *urlParts = [urlString componentsSeparatedByString:@":"];
        NSString *cmd = [urlParts objectAtIndex:1];

        if ( [cmd isEqualToString:@"printPdf"] ) {
            //  [self dosomething];
        }
    }
    return YES;
}
此时,我需要某种xcode函数,它接受pdf的路径并将其发送到airPrinter


这是一个好方法吗?我正在搜索如何在uiWebView中打印pdf的示例。

由于我赢得了风滚草徽章,没有投票和回复,我将发布我的解决方案

这将获取pdf文档并打开airPrint对话框——所有这些都在uiWebView中

因此,如果IOS只允许javascript window.print()在uiWebView内部运行,我的应用程序就不会在应用商店中设置,等待批准和重新发布

无论如何,这里有一个可行的解决方案:

- (void)printInit:(NSString *)parm  {

    UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController];
    if(!controller){
        NSLog(@"Couldn't get shared UIPrintInteractionController!");
        return;
    }

    NSString *base = @"https://someurl.com/";
    NSString *ustr = [base stringByAppendingString:parm];

    //NSURL *url = [NSURL fileURLWithPath:ustr];
    NSURL *url = [NSURL URLWithString:ustr];    
    NSData *thePdf = [NSData dataWithContentsOfURL:url];

    controller.printingItem = thePdf;
    UIPrintInfo *printInfo = [UIPrintInfo printInfo];
    printInfo.outputType = UIPrintInfoOutputGeneral;
    printInfo.jobName = @"PDFDoc";
    controller.printInfo = printInfo;

    void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) =
    ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
        if (!completed && error) {
             NSLog(@"FAILED! error = %@",[error localizedDescription]);
        }
    };

    CGRect rect = CGRectMake(310, 5, 100, 5);
    [controller presentFromRect:rect inView:self.webView animated:YES completionHandler:completionHandler];
}