Ios 不支持格式(.doc、.ppt、.xls等)的AirPrint可以工作,但带有代码味道

Ios 不支持格式(.doc、.ppt、.xls等)的AirPrint可以工作,但带有代码味道,ios,uiwebview,nsurl,tmp,uiprintinteractioncntrler,Ios,Uiwebview,Nsurl,Tmp,Uiprintinteractioncntrler,使用提示可以打印DOCX,PDF。。。通过将其加载到UIWebView: [webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:filePath]]]; 现在,为了获得文件路径,我将要打印的文档写入app的tmp/目录: NSFileManager* fileManager = [NSFileManager defaultManager]; NSString* filePath = [NSString

使用提示可以打印DOCX,PDF。。。通过将其加载到
UIWebView

[webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:filePath]]];
现在,为了获得
文件路径
,我将要打印的文档写入app的
tmp/
目录:

NSFileManager* fileManager = [NSFileManager defaultManager];
NSString* filePath = [NSString stringWithFormat:@"%@/%@.%@", NSTemporaryDirectory(), documentName, mimeType];
[fileManager createFileAtPath:filePath contents:documentData attributes:nil];
我只需要将NSData(文档)加载到UIWebView中即可进行打印我是否可以直接获取文档的
文件路径
(并避免写入磁盘)?

已尝试
[webView loadData:documentData MIMEType:MIMEType textEncodingName:nil baseURL:nil]及其变体


整件事:

UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController];
if (pic)
{
    [[UINavigationBar appearance] setBarStyle:UIBarStyleBlackOpaque];
    UIPrintInfo *printInfo = [UIPrintInfo printInfo];
    printInfo.jobName = documentName;
    pic.printInfo = printInfo;

    // Apple-supported formats (.pdf & some images)
    if ([UIPrintInteractionController canPrintData:documentData]) 
        pic.printingItem = documentData;
    // Apple-un-supported formats (.doc, .xls, .ppt, ...)
    else 
    {
        NSFileManager* fileManager = [NSFileManager defaultManager];
        NSString* filePath = [NSString stringWithFormat:@"%@/%@.%@", NSTemporaryDirectory(), documentName, mimeType];
        [fileManager createFileAtPath:filePath contents:documentData attributes:nil];

        UIWebView* webView = [UIWebView new];
        [webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:filePath]]];
        pic.printFormatter = webView.viewPrintFormatter;
    }

    void (^completionHandler)(UIPrintInteractionController *,    BOOL,           NSError *) =
                            ^(UIPrintInteractionController *pic, BOOL completed, NSError *error)
    {
        if (!completed && error)
            NSLog(@"Printing error in domain %@ with error code %u", error.domain, error.code);
    };
    [pic presentAnimated:YES completionHandler:completionHandler];
}

你目前的方法有效吗?因为我也有同样的问题(打印doc(x)、xls(x)等),甚至在磁盘上写入文件都不起作用。但是不,只有当文件写在磁盘上时,你才能得到文件路径。@MarcMosby,是的,上面的方法是有效的:纸上的格式不是完美的,但至少内容是存在的。之所以提出这个问题,只是因为这种方法闻起来。。。除非真的没有更好的方法访问
文件路径
(或其他可用句柄)。