Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过PHP提交PDF表单时,应将哪些数据返回给Adobe Reader?_Javascript_Php_Forms_Pdf_Reader - Fatal编程技术网

Javascript 通过PHP提交PDF表单时,应将哪些数据返回给Adobe Reader?

Javascript 通过PHP提交PDF表单时,应将哪些数据返回给Adobe Reader?,javascript,php,forms,pdf,reader,Javascript,Php,Forms,Pdf,Reader,我们有一系列可填写的PDF,需要根据其用途和位置提交到不同的电子邮件地址。每个PDF都有一个“提交”按钮,用于将文档定向到服务器上的PHP脚本,该脚本将完成的PDF保存为整个PDF文档,并将PDF作为附件发送到URL中指定的任何电子邮件地址 这一切都很好 问题是,在我的一生中,我无法找出或找到需要返回PDF(使用Adobe Reader)以供用户反馈的内容。IE-一个警告框,上面写着“您的表单已成功提交”或类似内容。脚本执行成功,但我一直在读卡器中收到一个错误,上面说 “提交过程中出错。无法处理

我们有一系列可填写的PDF,需要根据其用途和位置提交到不同的电子邮件地址。每个PDF都有一个“提交”按钮,用于将文档定向到服务器上的PHP脚本,该脚本将完成的PDF保存为整个PDF文档,并将PDF作为附件发送到URL中指定的任何电子邮件地址

这一切都很好

问题是,在我的一生中,我无法找出或找到需要返回PDF(使用Adobe Reader)以供用户反馈的内容。IE-一个警告框,上面写着“您的表单已成功提交”或类似内容。脚本执行成功,但我一直在读卡器中收到一个错误,上面说

“提交过程中出错。无法处理text/html类型的内容。”

这是我到目前为止的PHP。底部所有被注释掉的内容都代表了我已经尝试过的东西,但没有成功:

<?php
ob_start();
$file = file_get_contents("php://input"); 
$time = microtime(true);
$newfile = "forms/" . $time . ".pdf";  
$worked = file_put_contents($newfile, $file); 
ob_end_clean();

require 'PHPMailer/PHPMailerAutoload.php';

$mail = new PHPMailer;
$mail->isSendmail();
$mail->setFrom('emailAddress', 'emailName');
$mail->addReplyTo('emailAddress', 'emailName');
$mail->addAddress($_REQUEST['email']); 
$mail->addAttachment( $newfile );
$mail->isHTML(true);
$mail->Subject = 'New form submission';
$mail->Body    = 'A new form has been submitted.';

if(!$mail->send()) {
    //header('Content-Transfer-Encoding: binary');
    //return false;
    //echo "Message could not be sent:  ";
    //echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    //header('Content-type: text/html');
    //echo 'Form successfully submitted';

    //header('Content-type: application/pdf');
    //@readfile($newfile);

    //echo 'Message has been sent';

    //header('Content-Transfer-Encoding: binary');
    //return true;

    //header('Content-type: text/javascript');
    //echo 'app.alert("Form emailed successfully",3);';

    //@readfile('success.pdf');

    //header('location: success.pdf');
    //header('Location: success.pdf');
    //header(location: success.html');
}
?>

我在基于PHP的PDF表单处理器中使用此代码。它编写了Adobe Reader能够理解的FDF响应。提交表单后,Adobe Reader将显示感谢消息。如果表单是从web页面提交的(比如为了故障排除),PHP脚本将列出提交的表单字段

<?php if ($_SERVER['HTTP_USER_AGENT'] == 'AcroForms') {
    header('Content-Type: application/vnd.fdf');
    echo "%FDF-1.2\r\n" .
         "1 0 obj<< /FDF << /Status (Thank you and good bye.) >>      >>endobj\r\n" .
         "trailer\r\n" .
         "<< /Root 1 0 R >>%%EOF";
} else {
    foreach ($_POST as $ffield => $fvalue) {
        echo "$ffield = " . "$fvalue<br />";
    }   
}?>


显然,您无法将HTML发送到PDF查看器。您有以下选项:返回完整PDF、返回FDF文件、返回XFDF文件。鉴于PHP堆栈中可能没有PDF库,我建议您返回一个XFDF文件。XFDF文件是一个XML文件。如果您想知道XFDF文件是什么样子的,请看一看,我会在会议后查看,谢谢!一个问题:为什么
@readfile($newfile)
返回已填充的PDF而
@readfile('success.PDF')
不返回简单的“success!”我创建的PDF?我认为您的服务器返回了一条500 HTML消息,例如,因为服务器找不到
success.PDF
(例如,因为文件路径不正确)。请删除@符号并检查错误日志。另外,也不要忘记发送内容类型标题!搞定了!非常感谢你。我知道我错过了一些简单的事情。在这种情况下,标题和完整的obj代码。同时处理6个不同项目的部分问题。。。没有时间完全排除故障。再次感谢。我从另一个SOF成员那里得到了这个代码。不幸的是,我没有参考资料。这似乎不适用于较新版本的Acrobat DC。我只是返回了一个普通的旧字符串,它似乎显示得很好。