2014-01-09 41 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。這產生了一些PDF雖然我無法管理設置文件的編碼

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被錯誤處理程序做什麼,他們做shoudl

+0

對不起,是這方面的工作? – whossname