链接到app中的pdf

时间:2011-01-11 19:43:02

标签: iphone pdf ios uiwebview plist

我有一个iOS应用程序,在某个时刻打开一个链接到webview中的网站。这些链接保存在plist文件中(因此随着应用程序的发展,很容易维护它们)。我接下来要做的是链接到应用程序中保存的PDF(或任何文本文件格式的图片,甚至是html格式,这是灵活的)。我想在现有的应用程序结构中尽可能地做到这一点。那么,是否可以创建一个可以作为web链接放入plist的链接,而是在设备本身上打开一个文件(可能在webview中)?我该怎么做呢?有任何想法吗?

Thanx提前为您提供帮助!

2 个答案:

答案 0 :(得分:0)

是的,我会选择UIWebView。 iOS应该能够自动处理某些URL处理程序,如果需要,您的应用程序可以register to handle其余部分。

iOS知道如何处理某些文件类型。例如,如果Safari(或UIWebView)遇到http://somesite.com/afile.pdf,它就会知道哪些应用可以处理文件类型。另一个例子是电话号码:skype://8005555555。 iOS知道打开Skype并将号码传递给它。 iOS也知道iBooks可以处理PDf文件。

注册您的应用以获取相应的文件处理程序和类型。然后,用户可以点击并按住链接以查看可用应用程序菜单以处理链接。如果它是仅由一个应用程序使用的链接,则用户甚至不需要按住,点击就足够了。

至于指向本地文件的链接,您可以使用C函数NSDocumentsDirectory()并将其附加到url处理程序。 (例如:http://NSDocumentsDirectory()/filename.pdf

答案 1 :(得分:0)

您需要在运行时创建链接。我建议在本地URL上有一个特定的前缀,例如mylocalfile:filename。然后,在加载plist的代码中,检查前缀并在必要时创建链接。您也可以只创建一次这些链接并将它们存储在单独的文件中,然后加载而不是原始文件。

NSArray *links = nil; //I assumed your plist is an array. Change to dictionary if required
NSString *pathToStoredFile; //Get the path for the file you create with the updated links
if([[NSFileManager defaultManager] fileExistsAtPath:pathToStoredFile]) {
    links = [NSArray arrayWithContentsOfFile:pathToStoredFile];
} else {
    NSArray *tmp = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"ListOfLinks" ofType:@"plist"]];
    if(!tmp) {
        //handle error
    }
    NSMutableArray *tmpLinks = [[NSMutableArray alloc] initWithCapacity:[tmp count]];
    for(NSString *link in tmp) {
        if([link hasPrefix:@"mylocalfile:"]) {
            link = [link substringFromIndex:12]; //12 is the length of mylocalfile:
            NSURL *url = [[NSBundle mainBundle] urlForResource:[link stringByDeletingPathExtension] withExtension:[link pathExtension]];
            [tmpLinks addObject:[url absoluteString]];
        } else [tmpLinks addObject:link];
    }
    links = [tmpLinks copy];
    [tmpLinks release];
    [links writeToFile:pathToStoredFile atomically:NO];
}