2016-08-01 3 views
2

$ cordovaFile에서 writeFile (path, file, data, replace) 메서드를 사용하여 새 파일 (pdf, jpg, text)을 작성했습니다. 데이터로 편안한 서비스에서 데이터 스트림을 얻었습니다. (% PDF-1.5↵ % ↵1 0 obj↵ ..처럼 보입니다) 문제는 파일을 쓸 수 있지만 비어있는 것으로 열리는 것입니다. pdf 파일 크기가 정확합니다. 데이터 필드 내가 데이터 자체 블럽 스트리밍 사용 (VAR 블롭 = 새로운 물방울 ([데이터] {형 '프로그램/PDF는'}))

이 내 코드

var path = cordova.file.externalRootDirectory; 
$cordovaFile.writeFile(path, "myCreatedPdf.pdf", blob, true) 
.then(function(success){ 
    console.log("file"); 
    $cordovaFileOpener2.open(
     success.target.localURL,'application/pdf' 
    ); 
}, function (error) { 
    console.log("error"); 
});   

제발 도와주세요 .... 어떤 아이디어 ...?

+0

먼저 텍스트 파일을 만들려고 했습니까? –

답변

1

이 방법을 사용하면 텍스트 파일을 올바르게 쓸 수 있습니다. 문제는 .pdf .png 파일 쓰기입니다. 그래서이 방법을 사용하여 파일을 씁니다. 저를 위해 일하는.

function saveFile(pdfBlob, fileName) { 
    var deferred = $q.defer(); 

    var filePath = ""; 
    try { 
     console.log('SaveFile: requestFileSystem'); 
     window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail); 
    } catch (e) { 
     console.error('SaveFile_Err: ' + e.message); 
     deferred.reject(e); 
     throw ({ code: -1401, message: 'unable to save report file' }); 
    } 


    function gotFS(fileSystem) { 
     fileSystem.root.getDirectory("TokenReader", { create: true }, gotDir); 
    } 

    function gotDir(dirEntry) { 
     //console.error('SaveFile: gotFS --> getFile'); 
     //dirEntry.getFile("rptSampleNew.pdf", {create: true, exclusive: false}, gotFileEntry, fail); 
     dirEntry.getFile(fileName, { create: true, exclusive: false }, gotFileEntry, fail); 
    } 

    function gotFileEntry(fileEntry) { 
     //console.error('SaveFile: gotFileEntry --> (filePath) --> createWriter'); 
     filePath = fileEntry.toURL(); 
     fileEntry.createWriter(gotFileWriter, fail); 
    } 

    function gotFileWriter(writer) { 
     //console.error('SaveFile: gotFileWriter --> write --> onWriteEnd(resolve)'); 
     writer.onwriteend = function (evt) { 
      $timeout(function() { 
       deferred.resolve(filePath); 
      }, 100); 
     }; 

     writer.onerror = function (e) { 
      console.log('writer error: ' + e.toString()); 
      deferred.reject(e); 
     }; 

     writer.write(pdfBlob); 
    } 

    function fail(error) { 
     console.log(error.code); 
     deferred.reject(error); 
    } 

    return deferred.promise; 
}