2011-06-08 21 views
1

在短PDF表单:可以在PHP处理作为一份完整的PDF文档

我有一个PDF,客户可以填写。当他们按下“提交”按钮时,我想自动发送附有完整PDF的电子邮件。这应该发生在服务器端,而不需要客户进一步的交互。

在长:

目前我有PDF集把数据上传到服务器HTML表单数据。然后我的PHP脚本处理这些数据并发送一个纯文本电子邮件与数据。接收电子邮件的人更愿意拥有实际PDF的副本,而不仅仅是纯文本。

因此,在Adobe Acrobat 9 Pro中,我将提交按钮设置为“PDF完整文档”(如下所示)。

enter image description here

的问题是,我不知道在PHP做处理这个问题。我以为它会上传到服务器作为$_FILES阵列的一部分,但print_r($_FILES)显示为空阵列,并且$_FILES$_POSTcount0

所以我的问题是,上传的pdf发生了什么?并且有什么我可以用PHP将PDF转换为电子邮件附件?我不认为我遇到了文件大小的问题; post_max_size是2MB,PDF只有约725kb。


我实际上最终发送FDF数据到服务器而不是整个PDF。这意味着我不得不在我的PHP中编写一大堆乱码来处理FDF,但总的来说它只是一个较小的上传,并且符合客户的要求。如果你真的需要上传整个PDF,Patrick's answer below应该是正确的 - 你应该能够在$GLOBALS['HTTP_RAW_POST_DATA']找到上传的PDF。

+1

检查服务器的访问日志。如果整个PDF正在发送,您会看到服务器上的命中大小为725 KB,并让您的PHP脚本从请求标头中获取尽可能多的信息。可以在客户机上使用wiresniffer来查看Acrobat发送的内容。 – 2011-06-08 20:25:46

回答

1

您可以从$ GLOBALS ['HTTP_RAW_POST_DATA']中提取原始PDF数据。您可以将它输出到一个文件并像打开任何PDF一样打开它。

+1

我很确定我偶然发现了一个类似于这个的答案(在我选择了不同的路线之后)。在我想起回答自己的问题之前,我失去了链接,但我认为你基本上也是这样说的。谢谢! – 2012-07-10 12:35:01

0

如果您的$_FILES数组为空,则可能是使用了错误的<form enctype="">属性值。检查您是否有:

enctype="multipart/form-data" 

这是窗体允许发送文件所必需的。然后,您可以使用上传的文件并将其发送给客户端,这似乎是您的能力。

+0

请记住,此“表单”是由Acrobat(由其他人)创建的,它不是常规的HTML表单。任何想法,如果Acrobat可以让你改变这些表单属性? – 2011-06-08 20:18:55

+0

我不知道那时出了什么问题,但我可以问你什么时候看到$ _FILES是空的?你在什么地方记录它? – 2011-06-08 20:25:48

+0

我将这些信息回显给浏览器,当提交表单时,内置的浏览器窗口在Acrobat中打开,显示php页面的输出。 – 2011-06-08 20:34:34

相关问题