Javascript 通过PHP提交PDF表单时,应将哪些数据返回给Adobe Reader?
我们有一系列可填写的PDF,需要根据其用途和位置提交到不同的电子邮件地址。每个PDF都有一个“提交”按钮,用于将文档定向到服务器上的PHP脚本,该脚本将完成的PDF保存为整个PDF文档,并将PDF作为附件发送到URL中指定的任何电子邮件地址 这一切都很好 问题是,在我的一生中,我无法找出或找到需要返回PDF(使用Adobe Reader)以供用户反馈的内容。IE-一个警告框,上面写着“您的表单已成功提交”或类似内容。脚本执行成功,但我一直在读卡器中收到一个错误,上面说 “提交过程中出错。无法处理text/html类型的内容。” 这是我到目前为止的PHP。底部所有被注释掉的内容都代表了我已经尝试过的东西,但没有成功: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-一个警告框,上面写着“您的表单已成功提交”或类似内容。脚本执行成功,但我一直在读卡器中收到一个错误,上面说 “提交过程中出错。无法处理
<?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。我只是返回了一个普通的旧字符串,它似乎显示得很好。