表单提交后的确认对话框(警报)

时间:2009-05-03 15:59:49

标签: pdf acrobat

我想知道是否有办法在adobe reader中通知用户 pdf表单已提交给服务器?我提交的是 正常的http / html表单到php脚本没什么大不了的,直截了当, 但在文档,论坛等方面似乎有一个很大的“黑洞”。 至于提交表格时会发生什么。

我提交后没有办法触发javascript警报 表单??我不想再回复另一个说“谢谢”的pdf, 这有点俗气。我是pdf表格的新手,所以我猜那里 必须是将FDF返回到具有某些内容的原始文档的方法 其中执行的javascript例如警报('谢谢你的 反馈!')..

这应该是直截了当的,我认为Adobes大肆炒作 PDF技术更易于开发和访问..

任何想法? (哦,请不要问我为什么使用pdf表格而不是网页,这是来自“顶级”,所以作为开发人员我只需要这样做..)

4 个答案:

答案 0 :(得分:5)

您要发布到的服务器脚本必须在HTTP标头中使用此内容类型进行回复:

'Content-Type:application / vnd.fdf'

例如。如果您使用的是PHP:

header('Content-Type: application/vnd.fdf')

然后是相关的bastardized-pdf-javascript-mutant-half-bread,它将触发alert()对话框。

%FDF-1.2
1 0 obj
<<
/FDF
    <<
    /JavaScript 
        << 
        /Doc 2 0 R
        /After (confirmSend();)
        >>
    >>
>>
endobj
2 0 obj
[ 
(confirmSend) 3 0 R
]
endobj
3 0 obj
<<
>>
stream
function confirmSend()
{
app.alert({
    cTitle : 'title of the window',
    cMsg : 'message',
    nIcon : 3 
});
}
endstream
endobj
trailer
<<
/Root 1 0 R
>>
%%EOF

我希望你收到这条消息,因为我浪费了将近2周的时间来寻找解决方案......

答案 1 :(得分:1)

谢谢!我也一直在寻找解决方案几个小时!这非常令人沮丧。安装FDF工具包似乎有点过分,只是为了在提交PDF后得到一个简单的确认对话框。

我最终通过反复试验得到了以下内容(似乎网上绝对没有关于此的文档):

%FDF-1.2
%âãÏÓ
1 0 obj
<<
/FDF
    <<
    /Status(Thank you. Your details have been submitted and someone will get in touch with regarding your application.)
    >>
>>
endobj
trailer
<</Root 1 0 R>>
%%EOF

以上内容将在Adobe Reader中显示(或应呈现)一个对话框,而不显示“警告:JavaScript窗口”警告。

希望这最终对某人有用。

答案 2 :(得分:1)

我争吵了几天,试图找出为什么当我使用response.write发送FDF时,它只是不会显示在Reader中。我尝试发送手工制作的FDF并安装FDF工具包来创建FDF响应。我能够创建有效的FDF,因为我能够在Reader中本地打开并正确显示弹出窗口,但是我无法让它在我从ASP.NET页面发送FDF的生活中工作。

然后灵感来袭。在我尝试发送FDF的一次尝试中,我将FDF存储在一个文件中,并尝试使用流式读取器将其泵入响应。在尝试使用response.write多次失败之后,我突然想到了response.redirect到保存的fdf文件并且工作正常。我以前添加了fdf作为我的网站的注册MIME扩展,其中application / vnd.fdf作为MIME类型。现在,用户在成功提交后会收到弹出窗口。 C#中的简单解决方案如下所示:

Page.Response.Redirect("success.fdf");

答案 3 :(得分:0)

经过3天的搜索后,我设法找到了答案,在php脚本中为fdf文件添加了一个标题,在acrobat的url末尾添加“#FDF”似乎是解决方案;

%FDF-1.2 1 0 obj &LT;&LT; / FDF     &LT;&LT;     / JavaScript的         &LT;&LT;         / Doc 2 0 R         /之后(confirmSend();)

  

&GT;   &GT;   &GT;   endobj   2 0 obj   [   (confirmSend)3 0 R   ]   endobj   3 0 obj   &LT;&LT;   &GT;   流   function confirmSend()   {   app.alert(“表格已成功提交\ n感谢您的反馈!”,3);   }   endstream   endobj   预告片   &LT;&LT;   / Root 1 0 R   &GT;   %% EOF