尝试使用 Intel XDK 保存 PDF 文件
Trying to save a PDF file with Intel XDK
我正在尝试重新创建 this example。
但是当我点击按钮时出现错误:"Uncaught ReferenceError: LocalFileSystem is not defined"。
这是我的代码:
<!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>
这是我使用 Chrome 53 和 Windows 7 在本地测试的对您的代码的修改。
主要变化是:
- 在保存到设备之前,您需要调用
requestQuota()
以在本地设备上获取 space - 示例参见 the documentation and this question;
- 将
pdf.output()
返回的字符串转换为 FileWriter
的 Blob
;
- 删除对
LocalFileSystem
的不必要引用。
写入文件的位置取决于您的操作系统和浏览器;如果您使用 Chrome、you can find more information about where the file was written here.
在 Windows 7,我在这里找到了文件:C:\Users\USERNAME\AppData\Local\Google\Chrome\User Data\Default\File System8\p[=16=][=16=]000016
我能够在 Adobe Reader 中通过将 .pdf
附加到文件名来打开它。
<!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>
我正在尝试重新创建 this example。
但是当我点击按钮时出现错误:"Uncaught ReferenceError: LocalFileSystem is not defined"。
这是我的代码:
<!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>
这是我使用 Chrome 53 和 Windows 7 在本地测试的对您的代码的修改。
主要变化是:
- 在保存到设备之前,您需要调用
requestQuota()
以在本地设备上获取 space - 示例参见 the documentation and this question; - 将
pdf.output()
返回的字符串转换为FileWriter
的Blob
; - 删除对
LocalFileSystem
的不必要引用。
写入文件的位置取决于您的操作系统和浏览器;如果您使用 Chrome、you can find more information about where the file was written here.
在 Windows 7,我在这里找到了文件:C:\Users\USERNAME\AppData\Local\Google\Chrome\User Data\Default\File System8\p[=16=][=16=]000016
我能够在 Adobe Reader 中通过将 .pdf
附加到文件名来打开它。
<!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>