Открытие файла PDF в Windows Phone

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

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 ": объект является нулевым или неопределенным"

Я не хочу использовать ComponentOne.

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

3 ответа

Решение

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

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

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

Попробуй это

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);

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

Другие вопросы по тегам