使用该jsPDF插件,我将创建一个.pdf文件并基于单击按钮生成下载。我想将文件保存到服务器上,而不是启动下载。因此,当单击按钮时,我希望将文件保存在:
jsPDF
.pdf
/tmp/uploads/pdf/example.pdf
我知道我需要使用Jquery.Ajax将文件发布到服务器。但是,查看文档并没有看到对任何.pdf数据类型的支持。
Jquery.Ajax
我的代码:
$(document).on("click", "#PDF", function () { var table = document.getElementById("result"); var tbl = window.sessionStorage.getItem("tbl"); var cols = [], data = []; function html() { var doc = new jsPDF('p', 'pt'); var res = doc.autoTableHtmlToJson(table, true); doc.autoTable(res.columns, res.data); doc.save( tbl+".pdf"); } html(); });
基于此xml文档保存示例,我尝试了以下操作:
var pdfDocument = doc.save( tbl+".pdf"); var pdfRequest = $.ajax({ url: "/tmp/uploads/pdf", processData: false, data: pdfDocument });
这将下载文件而不是保存文件。如何保存文件?
我设法使用来解决此问题FormData(),方法如下:
FormData()
$(document).on("click", "#PDF", function () { var table = document.getElementById("result"); var cols = [], data = []; function html() { var doc = new jsPDF('p', 'pt'); var res = doc.autoTableHtmlToJson(table, true); doc.autoTable(res.columns, res.data); var pdf =doc.output(); //returns raw body of resulting PDF returned as a string as per the plugin documentation. var data = new FormData(); data.append("data" , pdf); var xhr = new XMLHttpRequest(); xhr.open( 'post', 'upload.php', true ); //Post to php Script to save to server xhr.send(data); } html(); });
upload.php
if(!empty($_POST['data'])){ $data = $_POST['data']; $fname = "test.pdf"; // name the file $file = fopen("testa/pdf/" .$fname, 'w'); // open the file path fwrite($file, $data); //save data fclose($file); } else { echo "No Data Sent"; }
关键部分是var pdf =doc.output();您要获取原始pdf数据的位置。
var pdf =doc.output();