在uiwebview中,打印pdf文档的好方法是什么?
可以通过网址访问pdf,也可以将其加载到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的示例。
答案 0 :(得分:3)
由于我已经获得了没有投票且没有回复的风滚草徽章,我将发布我的解决方案。
这将获取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];
}