【问题标题】:Can PHP handle a PDF form submitted as a complete PDF documentPHP可以处理作为完整PDF文档提交的PDF表单吗
【发布时间】:2011-06-08 20:11:17
【问题描述】:

简而言之:

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

长篇大论:

目前我已将 PDF 设置为将数据作为 html 表单数据发布到服务器。然后,我的 PHP 脚本会处理这些数据并发送带有数据的纯文本电子邮件。接收电子邮件的人更愿意拥有实际 PDF 的副本,而不仅仅是纯文本。

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

问题是,我不知道用 PHP 做什么来处理这个问题。我以为它会作为$_FILES 数组的一部分上传到服务器,但print_r($_FILES) 显示的是一个空数组,$_FILES$_POSTcount 都是0

所以我的问题是,上传的 pdf 发生了什么?我能用 PHP 做些什么来将该 pdf 转换为电子邮件附件吗?我认为我没有遇到文件大小问题。 post_max_size 是 2MB,而 PDF 文件只有大约 725kb。


我实际上最终将 FDF 数据而不是整个 PDF 发送到服务器。这意味着我必须在我的 PHP 中编写一大堆乱码来处理 FDF,但总而言之,这是一个较小的上传,它满足了客户的要求。如果你真的需要上传整个PDF,Patrick's answer below应该是正确的——你应该可以在$GLOBALS['HTTP_RAW_POST_DATA']找到上传的pdf。

【问题讨论】:

  • 检查服务器的访问日志。如果整个 PDF 正在发送,您会在服务器上看到大小为 725+kb 的命中,并让您的 PHP 脚本从请求标头中转储尽可能多的信息。可以在客户端计算机上使用 wiresniffer 来准确查看 Acrobat 发送的内容。

标签: php pdf file-upload


【解决方案1】:

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

【讨论】:

  • 我很确定我偶然发现了一个与此类似的答案(在我选择了不同的路线之后)。在我记得回答我自己的问题之前,我失去了链接,但我认为你基本上说了同样的话。谢谢!
【解决方案2】:

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

enctype="multipart/form-data"

这是表单允许发送文件所必需的。然后你就可以使用上传的文件并将它发送给客户端,这似乎是你的能力。

【讨论】:

  • 请记住,这个“表单”是在 Acrobat 中创建的(由其他人创建),它不是常规的 html 表单。知道 Acrobat 是否允许您更改这些表单属性吗?
  • 我不知道出了什么问题,但是请问您什么时候看到 $_FILES 是空的?你在某处记录它吗?
  • echo将此信息发送到浏览器,当提交表单时,Acrobat 中会打开一个内置浏览器窗口,显示 php 页面的输出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-29
  • 1970-01-01
  • 1970-01-01
  • 2016-12-08
  • 2012-06-25
  • 1970-01-01
相关资源
最近更新 更多