我正在使用JavaScript从用户填写的表单中获取信息,然后将此数据发送到PHP并使用FPDF生成PDF。问题是我希望浏览器要求用户保存PDF或在线查看它,但是 我不知道怎么办。 PDF会正确生成,但仅当我将其直接保存到我指定的特定路径时才会生成。
问题是,你们如何将JavaScript中的数据发送到PHP以生成PDF文件,然后浏览器要求用户打开或下载,或者我该如何创建一个用户可以检索此PDF的函数。
JavaScript:
function senddata() {//this activates when i push a button not a submit
var peticion = new XMLHttpRequest();
peticion.open('POST', 'generatepdf.php');
var nueva2 = {};
var key;
for (i = 0; i < 6; i++) {
key = document.forms[0].elements[i].id;
nueva2[key] = document.forms[0].elements[i].value;
}//here i take my data from the form and make an object
var json = JSON.stringify(nueva2);//here i tranform my object to json string so i can send it to my php
var parametros = "json_string=" + json;//here I do this so later I can easily transform the $_POST to an array in the form json_decode($_POST["json_string"],true);
peticion.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
peticion.send(parametros);//it sends ok
}
带有FPDF类和事物的PHP
<?php
require('fpdf/fpdf.php');
require('functions.php');
if($_SERVER['REQUEST_METHOD']=='POST'){
$datos=json_decode($_POST["json_string"],true); //here i have my data in an array format so i can use the parameters to fill my pdf fields
//...lots of pdf things here...//
$pdf->Output('F',"pdfs/Cotizacion ".$datos["nombres"]." ".$datos["apellidos"].".pdf");//this works but never ask the user
//$pdf->Output('D',"pdfs/Cotizacion ".$datos["nombres"]." ".$datos["apellidos"].".pdf");//this should force a dowload or send to the browser but doesnt work
//$pdf->Output();//this should send to the browser but doesnt work
}
答案 0 :(得分:0)
要在浏览器中内联查看PDF,应改为使用I
变量。查看完整的文档here。
我也不认为同时用两种方法输出文件是可行的。它可能会相互冲突。最好的方法是测试每种方法,如果它们确实相互冲突,则只需为用户添加条件即可决定他/她是否要在浏览器中下载或查看它。希望这会有所帮助。