Открытие файла 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);
Это работает правильно на моем устройстве.