2014-11-07 4 views
3

jsPDF를 사용하여 PDF를 생성하고 있습니다. Windows 8에서 생성 된 PDF 파일을 열어야합니다. window.open을 사용하면 작동하지 않습니다. 파일을 저장하고 성공하지 못했습니다.Windows8에서 열린 PDF 생성

어떻게하면 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입니다.

[업데이트 2]

I 다음, 버그 이미지 돈의 쇼 시도 :

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 배열. 그것을 변환해야한다면, 그렇게하십시오. 열거 나 파일을 Windows.System.Launcher.launchFileAsync 함께 시작하는

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

jsPDF 라이브러리를 사용하고 있습니다. https://github.com/MrRio/jsPDF – d0001

+0

아 ... 죄송합니다. 와우, 그건 혼란 스럽네. –

0

가장 좋은 방법 : 약속은 문제가있는 경우

, 그때는 다음과 같이 가야한다. StorageFile 객체를주고 나머지는 수행합니다. 사용자가 PDF에 할당 한 모든 응용 프로그램을 열거 나 사용자에게 PDF를 선택하라는 메시지가 표시됩니다.

앱에서 직접 PDF를 렌더링해야하는 경우 Windows.Data.Pdf API를 사용하십시오. PDF viewer sample을 참조하십시오.

P. 클라우드 스토리지에 연결되지 않은 장소에서 로컬 파일 시스템에 파일을 쓰는 경우 CachedFileUpdater를 사용할 필요가 없습니다. 즉, 로컬 appdata 또는 임시 appdata에 쓰는 경우 해당 통화를 생략 할 수 있습니다.