2016-09-13 4 views
2

Ich versuche this example neu zu erstellen.Versucht, eine PDF-Datei mit Intel XDK zu speichern

Aber wenn ich auf die Schaltfläche klicke, bekomme ich den Fehler: "Uncaught ReferenceError: LocalFileSystem ist nicht definiert".

Hier ist mein Code:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>jsPDF</title>  
    <script src="js/jquery-1.7.1.min.js"></script> 
    <script src="js/jspdf.js"></script> 
    <script src="js/FileSaver.js"></script> 
    <script src="js/html2canvas.js"></script> 
    <script> 
     function guardar(){ 
      var pdf = new jsPDF('p', 'pt', 'a4'); 
      var source = $('#tabelagastos')[0]; 
      var PDFFILE =''; 
      var arquivo = prompt("Qual o nome do arquivo?"); 

      pdf.specialElementHandlers = { 
       '#bypassme': function (element, renderer) { 
       return true; 
      } 
      }; 
      pdf.fromHTML(source, 15, 15, {'width': 170}, 
         function (dispose) { 
          PDFFILE = pdf.output(); 
         }); 

      //NEXT SAVE IT TO THE DEVICE 
      window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) { 
       fileSystem.root.getFile(arquivo +".pdf", {create: true}, function(entry) { 
        var fileEntry = entry; 
        entry.createWriter(function(writer) { 
        writer.onwrite = function(evt) { 
         alert("Save (root folder)!"); 
        }; 

        writer.write(PDFFILE); 
         }, function(error) { 
        alert(error); 
        }); 

       }, function(error){ 
        alert(error); 
       }); 
      }, 
      function(event){ 
       alert(evt.target.error.code); 
      }); 
    } 
    </script> 
</head> 
<body> 
<h1>EJEMPLO DE JSPDF</h1> 
    <hr /> 
    <div id="tabelagastos">some text</div> 
    <input type="button" id="iniciador" value="Guardar" onclick="guardar();"> 
</body> 

Antwort

0

Hier ist eine Modifikation des Codes, die ich vor Ort Chrome 53 und Windows 7.

Die wichtigsten Änderungen sind unter Verwendung getestet:

  • Vor dem Speichern auf dem Gerät müssen Sie requestQuota() aufrufen, um Speicherplatz auf dem lokalen Gerät zu erhalten ce - siehe the documentation und this question für ein Beispiel;
  • Konvertieren Sie die von pdf.output() zurückgegebene Zeichenfolge in eine Blob für die FileWriter;
  • Entfernen Sie den unnötigen Verweis auf LocalFileSystem.

Der Speicherort der geschriebenen Datei hängt von Ihrem Betriebssystem und Browser ab; Wenn Sie Chrome verwenden, geben Sie you can find more information about where the file was written here ein.

Unter Windows 7, fand ich die Datei hier: C:\Users\USERNAME\AppData\Local\Google\Chrome\User Data\Default\File System\018\p\00\00000016

Ich konnte es in Adobe Reader öffnen, indem .pdf an die Dateinamen angehängt wird.

<!DOCTYPE html> 
    <html lang="en"> 
    <head> 
     <meta charset="utf-8"> 
     <title>jsPDF</title>  
     <script src="jquery.min.js"></script> 
     <script src="jspdf.js"></script> 
     <script src="FileSaver.js"></script> 
     <script src="html2canvas.js"></script> 
     <script> 
     window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem; 
     function saveFile(){ 
      var pdf = new jsPDF('p', 'pt', 'a4'); 
      var source = $('#spendingTable')[0]; 
      var PDFFILE =''; 
      var filename = prompt("Enter a file name:"); 

      pdf.specialElementHandlers = { 
       '#bypassme': function (element, renderer) { 
        return true; 
       } 
      }; 

      pdf.fromHTML(source, 15, 15, {'width': 170}, function (dispose) { 
       PDFFILE = new Blob([pdf.output()], {type: "application/pdf"}); 
      }); 

      //NEXT SAVE IT TO THE DEVICE 
      var requestedBytes = 1024*1024*10; // 10MB 
      navigator.webkitPersistentStorage.requestQuota (
       requestedBytes, function (grantedBytes) { 
        window.requestFileSystem(PERSISTENT, 1024*1024, function (fileSystem) { 
         fileSystem.root.getFile(filename +".pdf", {create: true}, function (entry) { 
          var fileEntry = entry; 
          entry.createWriter(function(writer) { 
           writer.onwrite = function(evt) { 
            alert("Saved to root folder!"); 
           }; 
           writer.write(PDFFILE); 
          }, 
          function (error) { 
           alert(error); 
          }); 
         }, 
         function (error) { 
          alert(error); 
         }); 
        }, 
        function (event) { 
         alert(event.target.error.code); 
        }); 
       } 
      ); 
     } 
     </script> 
    </head> 
    <body> 
    <h1>JSPDF EXAMPLE</h1> 
     <hr> 
     <div contenteditable="true" id="spendingTable" style="border: 1px black solid">This text is saved into a PDF.</div> 
     <br> 
     <input type="button" value="Save" onclick="saveFile();"> 
    </body>