使用jsPDF插件,我正在创建一个.pdf文件,并根据按钮点击生成下载.我想将文件保存到我的服务器而不是启动下载.因此,当单击按钮时,我希望将文件保存在:
- /tmp/uploads/pdf/example.pdf
我知道我需要使用Jquery.Ajax将文件发布到服务器.但是,查看文档,我没有看到任何支持.pdf作为数据类型.
我的代码:
- $(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 document saving示例,我尝试了以下方法:
- var pdfDocument = doc.save( tbl+".pdf");
- var pdfRequest = $.ajax({
- url: "/tmp/uploads/pdf",processData: false,data: pdfDocument
- });
解决方法
我设法使用FormData()修复此问题,这是我如何做到的:
- $(document).on("click",function () {
- var table = document.getElementById("result");
- var cols = [],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数据的位置.