2014-01-09 2 views
0

많은 블로그를 거쳤습니다. 전화 갭에서 PDF 파일을 만들지 만 데이터가 없어도 성공했습니다.전화 번호부에 jspdf 라이브러리를 사용하여 PDF 파일을 작성하고 엽니 다.

내 코드 javascrpit :

document.addEventListener("deviceready", createPDF, false); 

function createPDF(){ 
var doc = new jsPDF(); 

doc.text(20, 20, 'HELLO!'); 

doc.setFont("courier"); 
doc.setFontType("normal"); 
doc.text(20, 30, 'This is a PDF document generated using JSPDF.'); 
doc.text(20, 50, 'YES, Inside of PhoneGap!'); 

//FIRST GENERATE THE PDF DOCUMENT 
console.log("generating pdf..."); 
var doc = new jsPDF(); 

doc.text(20, 20, 'HELLO!'); 

doc.setFont("courier"); 
doc.setFontType("normal"); 
doc.text(20, 30, 'This is a PDF document generated using JSPDF.'); 
doc.text(20, 50, 'YES, Inside of PhoneGap!'); 

var pdfOutput = doc.output(); 
console.log(pdfOutput); 

//NEXT SAVE IT TO THE DEVICE'S LOCAL FILE SYSTEM 
console.log("file system..."); 
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) { 

    console.log("------------------------------------"+fileSystem.name); 
    console.log("------------------------------------"+fileSystem.root.name); 
    console.log("------------------------------------"+fileSystem.root.fullPath); 

    fileSystem.root.getFile("test erp.pdf", {create: true}, function(entry) { 
     var fileEntry = entry; 
     console.log(entry); 

     entry.createWriter(function(writer) { 
     writer.onwrite = function(evt) { 
     console.log("write success"); 
     }; 

     console.log("writing to file"); 
     writer.write(pdfOutput); 
     }, function(error) { 
     console.log(error); 
     }); 

    }, function(error){ 
     console.log(error); 
    }); 
}, 
function(event){ 
console.log(evt.target.error.code); 
}); 
} 

및 config.xml 파일 :

<plugin name="LocalFileSystem" value="org.apache.cordova.file"/> 

과 몸

당신이하려고하면

<script src="js/html_to_pdf/jspdf.source.js"></script> 
의 하단에 하나의 javascrpit을 추가, 그러면 콘솔에 오류가 없으며 새 파일이 전화 메모리에 작성되지만 빈 파일이고 대화 상자는 "문서 크기가 0"이되므로 열기를 할 수 없습니다.

누구든지 이에 대한 참조 또는 해결책을 가질 수 있습니까? 귀중한 답장을 기다리고 있습니다.

고맙습니다.

답변

0

여기 비동기 파일 API를 사용해 보았습니다. 내가 설치 파일 인코딩

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, 
    // onRequestFileSystemReady 
    function(fileSystem) 
    { 
     fileSystem.root.getFile("my.pdf", 
      {create : true}, 
      // onGetFileReady 
      function(entry) 
      { 
       // entry is a "file entry" 
       entry.createWriter(
        // onWriterReady 
        function(writer) 
        { 
         writer.onwrite = function(evt) { 
          console.log("write success"); 
         }; 

         console.log("writing to file");         
         writer.onerror= onWriteError; 
         var blobBuilderError= false; 
         window.BlobBuilder = window.BlobBuilder || 
              window.WebKitBlobBuilder || 
              window.MozBlobBuilder || 
              window.MSBlobBuilder; 
         if (typeof window.BlobBuilder === "undefined") 
         { 
          console.error("BlobBuilder, not defined");  
          blobBuilderError= true; 
         } 


         if(blobBuilderError !== true)        
         { 
         // it works with android not with ios 
          var bb = new BlobBuilder(), 
           blob; 
          bb.append(PdfOutput);     
          blob = bb.getBlob("text/plain"); 
          writer.write(blob); 
         } 
         else 
         { 
          writer.write(PdfOutput); 
         }        
        },        
        onWriterError 
       ); 
      }, 
      onGetFileError 
     ); 
    },    
    onRequestFileSystemError 
); 

onWriteError, onWriterError, onGetFileError를 관리 할 수 ​​있지만 그것은 onRequestFileSystemError 오류 처리기은

+0

죄송 할 shoudl 일을하고 있습니다, 일부 PDF를 생성,이 작업은? – whossname

관련 문제