Как загрузить документ из папки tmp в веб-браузер pdftron?

Я использую HTML5 компонента веб-обозревателя для приложения iOS.

Я добавил папку "HTML5", поскольку "Создать ссылку на папку для любой добавленной папки" и "Копировать элементы в папку целевой группы" не отмечены.

Пример кода, приведенный в iOS, имеет папку с именем "xod" с документом по умолчанию, и папка добавляется как "Создать ссылку на папку для любой добавленной папки".

Код, упомянутый в примере для приведенного выше сценария, выглядит следующим образом:

- (void)viewDidLoad
{
  [super viewDidLoad];

UIWebView* webView = [[UIWebView alloc] initWithFrame:self.view.frame];

webView.delegate = self;
webView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

[self.view addSubview:webView];

NSString* fullPath = [[NSBundle mainBundle] pathForResource:@"/html5/MobileReaderControl" ofType:@"html"];

NSURL *url = [NSURL fileURLWithPath:fullPath];
NSString* absoluteString  = [url absoluteString];
NSString* stringWithQuery = [absoluteString stringByAppendingString:@"#d=iosrange://xod/GettingStarted.xod"];
NSURL* webviewUrl = [NSURL URLWithString:stringWithQuery];

NSURLRequest* webviewerRequest = [[NSURLRequest alloc] initWithURL:webviewUrl];
[webView loadRequest:webviewerRequest];
}

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

if ([[URL scheme] isEqualToString:@"iosrange"]) {
    NSString *requestString = [URL absoluteString];
    // get rid of the protocol
    NSString *withoutProtocol = [[requestString componentsSeparatedByString:@"//"] objectAtIndex:1];

    NSArray *urlParts = [withoutProtocol componentsSeparatedByString:@"#"];
    // document location is everything before the question mark
    NSString *docPath = [[urlParts objectAtIndex:0] stringByDeletingPathExtension];
    NSString *docLocation = [[NSBundle mainBundle] pathForResource:docPath ofType:@"xod"];

    // query string has start and possibly stop values for the byte range
    NSArray *queryString = [[urlParts objectAtIndex:1] componentsSeparatedByString:@"&"];
    NSInteger rangeStart = [[queryString objectAtIndex:0] integerValue];
    NSInteger originalRangeStart = rangeStart;
    NSInteger rangeEnd = [[queryString objectAtIndex:1] integerValue];

    NSFileHandle *fileHandle = [NSFileHandle fileHandleForReadingAtPath:docLocation];
    if (rangeStart < 0) {
        // a negative range means it's from the end of the file
        // we need to calculate what that offset is from the beginning of the file
        NSInteger fileSize = [fileHandle seekToEndOfFile];
        rangeStart = fileSize + rangeStart;
    }

    [fileHandle seekToFileOffset:rangeStart];

    NSData *data;
    if (rangeEnd == 0) {
        data = [fileHandle readDataToEndOfFile];
    } else {
        data = [fileHandle readDataOfLength:(rangeEnd - rangeStart)];
    }

    // convert data to base64
    NSString *stringBuffer = [Utils encodeBase64WithData:data];

    // call JavaScript function with the data
    // setTimeout is used to make sure that it returns asynchronously
    NSString *jsFunction = [NSString stringWithFormat:@"setTimeout(function() {window.CoreControls.PartRetrievers.IOSPartRetriever.PartSuccess('%@', %d);}, 0)", stringBuffer, originalRangeStart];
    [webView stringByEvaluatingJavaScriptFromString:jsFunction];

    return NO;
}
return YES;
}

Но мой документ сохраняется в папке "tmp" приложения, так как он загружается с сервера. и я не могу загрузить документ из папки TMP. Пожалуйста помоги.

Я не могу переместить документ из папки "tmp" в "xod", так как я не могу изменить Bundle во время выполнения, и документ также используется в других местах.

Когда я добавляю документ в папку "xod" в комплекте, он загружает штрафы. Но когда я пытаюсь загрузить документ из папки "tmp" в приложение, оно не загружается. Я попытался добавить путь к документу в "stringWithQuery", но безуспешно.

Основная проблема - это stringWithQuery. Пожалуйста помоги.

Я хочу загрузить документ из папки "tmp".

Заранее спасибо.

1 ответ

Проблема заключается в том, что пример кода написан для чтения файла.xod из комплекта приложения, но вы загружаете файл xod во временный каталог. Так что вам нужно изменить

NSString* fullPath = [[NSBundle mainBundle] pathForResource:docPath ofType:@"xod"];

в

NSString* fullPath = [[NSTemporaryDirectory() stringByAppendingPathComponent:docPath] stringByAppendingPathExtension:@"xod"];
Другие вопросы по тегам