2013-09-10 2 views
2

Я разрабатываю приложение для Windows Phone 8. В моем приложении я должен отображать PDF-файл в автономном режиме (без сетевого подключения) в приложении. Для этого я должен сделать следующее:Загрузить, сохранить (локально) и отобразить PDF по ссылке

  1. Загрузить PDF-файл по ссылке (URL), предоставленной на стороне сервера.
  2. Сохраните загруженный файл PDF в локальном хранилище.
  3. Открыть и отобразить файл PDF из локального хранилища.

При поиске я нашел предложения по использованию набора инструментов ComponentOne Studio под названием «Studio for Windows Phone». К сожалению, это не бесплатно. Есть ли способ реализовать бесплатно?

Любые ссылки, образцы или идеи будут очень признательны.

ответ

13

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

Так что давайте посмотрим, как это сделать шаг за шагом.

1- Загрузить PDF-файл по ссылке (URL), предоставленной стороне сервера:

WebClient client = new WebClient(); 
client.OpenReadCompleted += client_OpenReadCompleted; 
client.OpenReadAsync(new Uri("http://url-to-your-pdf-file.pdf")); 

2- Сохранить загруженный файл PDF в локальном хранилище:

async void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) 
{ 
    byte[] buffer = new byte[e.Result.Length]; 
    await e.Result.ReadAsync(buffer, 0, buffer.Length); 

    using (IsolatedStorageFile storageFile = IsolatedStorageFile.GetUserStoreForApplication()) 
    { 
     using (IsolatedStorageFileStream stream = storageFile.OpenFile("your-file.pdf", FileMode.Create)) 
     { 
      await stream.WriteAsync(buffer, 0, buffer.Length); 
     } 
    } 
} 

3- Открыть и отобразить PDF-файл из локального хранилища:

// Access the file. 
StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder; 
StorageFile pdffile = await local.GetFileAsync("your-file.pdf"); 

// Launch the pdf file. 
Windows.System.Launcher.LaunchFileAsync(pdffile); 
+0

Thanks anderZubi, Это работает правильно. Но третий шаг, запускает пусковую установку для открытия PDF. Но мое требование - отображать PDF в приложении, т. Е. В XAML. Есть ли надежда ...? – pg90

+0

Извините, я не знаю ни о каких бесплатных библиотеках PDF, но посмотрите на [это] (http://pdfsharpwp7.codeplex.com/) и [this] (http://silverlightpdf.codeplex.com/) , Они могут быть полезны. – anderZubi

+0

Thanx для этого удивительного ответа :) – souvickcse

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