2013-03-24 3 views
3

Я разрабатываю приложение для Windows Phone 7, и для этого я использую шаблон Phonegap. Все выглядит идеально, но теперь я застреваю, пытаясь открыть PDF-файл в браузере. Я пробовал следующее, но это не работает, потому что URL-адрес PDF превышает предел символов 2048 (это URL-адрес данных). Этот код запускается после запуска события deviceReady.Открытие файла PDF в Windows Phone

var ref = window.open('http://www.google.com', '_blank', 'location=no'); 
ref.addEventListener('loadstart', function() { alert(event.url); }); 

Теперь я пытаюсь сохранить файл PDF в хранилище, а затем я пытаюсь, чтобы он открыл браузер, но браузер не показывает ничего. Я редактирую код InAppBrowser.cs из cordovalib, и я добавил следующие строки перед вызовом browser.Navigate (loc);

private void ShowInAppBrowser(string url) 
{ 
    IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication(); 
    FileStream stream = store.OpenFile("test.pdf", FileMode.Create); 
    BinaryWriter writer = new BinaryWriter(stream); 
    var myvar = Base64Decode("the big data url"); 
    writer.Write(myvar); 
    writer.Close(); 

    if (store.FileExists("test.pdf")) // Check if file exists 
    { 
     Uri loc = new Uri("test.pdf", UriKind.Relative); 
     ... 
    } 
} 

Этот код возвращает следующую ошибку: Вход: «Ошибка в функции обратного вызова ошибки: InAppBrowser1921408518 = TypeError: Не удалось получить значение„URL“объекта: объект является нулевым или не определено»

I не хотите использовать ComponentOne.

Любая помощь была бы принята с благодарностью!

ответ

3

Вы не можете открыть PDF-файлы из изолированного хранилища в читателе по умолчанию для файлов PDF. Если файл находится в сети, например. он имеет URI для него, вы можете использовать WebBrowserTask, чтобы открыть его, так как он будет загружать и открывать файл в Adobe Reader.

В Windows Phone 8 вы на самом деле можете открыть свой собственный файл в считывателем файла по умолчанию для этого расширения, но я не уверен, как это поможет вам, так как вы предназначаться PhoneGap и Windows Phone 7.

+0

Большое спасибо Тони! Ваш ответ мне очень помог. –

+0

Значит ли это, что мы не можем открыть PDF-документ или документ Word в WP8 вне собственного приложения? У меня тоже такая же проблема, я загрузил файл pdf в localStorage, и как только он загрузится, я хочу показать его пользователю, любые предложения, как это сделать? – Debhere

+0

@Debhere Проверьте http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206987(v=vs.105).aspx для получения дополнительной информации об этом. –

1

Toni правильно. Вы можете пойти и попытаться создать своего собственного зрителя (что будет аналогично использованию C1, но с большим количеством времени). Я работал над портом iTextSharp и PDFSharp для WP7, но ни один из них не является программой просмотра PDF. Они хороши для создания PDF-файлов и их парсинга (но для их работы больше работы). Это был личный квест мой, но, честно говоря, лучшее, что я получил, чтобы иметь возможность извлечь некоторые изображения из PDF (и ни одна из текста)

+0

Большое спасибо Джей! Ваш ответ мне очень помог. –

0

попробуйте этот

var installedLocation = Windows.ApplicationModel.Package.Current.InstalledLocation; 
var assets = await installedLocation.GetFolderAsync("Assets"); 
var pdf = await assets.GetFileAsync("metro.pdf"); 
Windows.System.Launcher.LaunchFileAsync(pdf); 

Это работало правильно на моем устройстве.

Смежные вопросы