2014-11-07 5 views
3

Я использую javascript-библиотеку jsPDF для создания pdf-файла. Мне нужно открыть сгенерированный PDF-файл в Windows 8. Использование window.open не работает. Я попытался сохранить файл и открыть его без успеха.Открыть сгенерированный PDF в Windows8

Как открыть pdf?

[UDPATE]

Я пытаюсь сохранить его с помощью writeBufferAsync так:

 var data = pdf.output('arraybuffer'); 

     Windows.Storage.FileIO.writeBufferAsync(file, data).done(function() { 
      // Let Windows know that we're finished changing the file so the other app can update the remote version of the file. 
      // Completing updates may require Windows to ask for user input. 
      Windows.Storage.CachedFileManager.completeUpdatesAsync(file).done(function (updateStatus) { 
       if (updateStatus === Windows.Storage.Provider.FileUpdateStatus.complete) { 
        WinJS.log && WinJS.log("File " + file.name + " was saved.", "sample", "status"); 
       } else { 
        WinJS.log && WinJS.log("File " + file.name + " couldn't be saved.", "sample", "status"); 
       } 
      }); 
     }); 

Но я получаю исключение, которое я writeBufferAsync ожидает номер массива. Тип данных - ArrayBuffer.

[Update 2]

Я попробовал следующий, шоу изображений, ошибка донской:

var data = pdf.output(); 

Windows.Storage.FileIO.writeTextAsync(file, data).done(function() { 
    // Let Windows know that we're finished changing the file so the other app can update the remote version of the file. 
    // Completing updates may require Windows to ask for user input. 
    Windows.Storage.CachedFileManager.completeUpdatesAsync(file).done(function (updateStatus) { 
     if (updateStatus === Windows.Storage.Provider.FileUpdateStatus.complete) { 
      WinJS.log && WinJS.log("File " + file.name + " was saved.", "sample", "status"); 
     } else { 
      WinJS.log && WinJS.log("File " + file.name + " couldn't be saved.", "sample", "status"); 
     } 
    }); 
}); 
+0

У вас возникла ошибка при использовании 'window.open'? – sherb

+0

Отсутствует ошибка или исключение, когда я использую window.open. Я попытался с помощью строки данных, но он предлагает приложение открыть данные схемы: – d0001

ответ

1

Написать PDF к файловой системе и использовать window.open (fileURL, '_blank'), чтобы открыть Это. Это все, что вам нужно делать. Как вы попытались открыть его и что произошло, когда вы это сделали?

+0

См. Обновленный вопрос. Благодарю. – d0001

1

Я не уверен, где ваша функция pdf.output() исходит из ... вы сами пишете?

Согласно API (https://github.com/mozilla/pdf.js/blob/master/src/display/api.js), вы должны иметь ссылку на документ, а затем просто позвонить:

document.getData() 

это возвращает обещание, которое затем можно использовать в функции writeTextAsync. API говорит, что возвращает типизированный массив. Я бы предположил, что это тот же тип, что и вы можете загрузить PDF-документ с ... массивом uint8. Если вам нужно его преобразовать, сделайте это.

Если обещания проблема, то он должен идти что-то вроде этого:

document.getData().done(function(arg) { 
//do something with the results here... 
} 
+0

Я использую библиотеку jsPDF: https://github.com/MrRio/jsPDF – d0001

+0

ahhh ... ОК, извините. Ничего себе, это путает –

0

Лучший способ открыть или запустить файл находится с Windows.System.Launcher.launchFileAsync. Вы даете ему объект StorageFile, и он делает все остальное, открывая любое приложение, которое пользователь назначил для PDF-файлов, или предложив пользователю выбрать его.

Если вам нужно сделать PDF-файл непосредственно в приложении, используйте API Windows.Data.Pdf. См. PDF viewer sample.

P.S. Если вы пишете файл в локальной файловой системе в том месте, которое, как вы знаете, не привязаны к облачному хранилищу, вам не нужно использовать CachedFileUpdater. То есть, если вы пишете свои локальные appdata или temp appdata, вы можете опустить этот вызов.

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