我已经按照书中给出的说明成功地提交了一个 Pdf 表单(9.2.1添加提交按钮到现有表单)。
在提交时调用 Java servlet:
submitButtonField.setAction(PdfAction.createSubmitForm(SERVLET_URL, null, PdfAction.SUBMIT_HTML_FORMAT));
处理接收到的数据后,servlet 重定向到特定的 url:
response.sendRedirect(REDIRECT_URL);
当 Pdf 未在 iframe 中显示时,这很有效。
我的问题是我的 Pdf 显示在 iframe 中,并且仅重定向 iframe 而不是父窗口。
一个解决方案是让我的 servlet 返回 REDIRECT_URL,然后调用一些 javascript 来重定向父窗口:
function redirectAfterFormSubmit(redirectUrl) {
window.top.location.href = redirectUrl;
}
但我不知道在提交表单后如何调用这个 javascript 函数。
我怎么能用 iText 做到这一点?
编辑:
我设法通过这样做在提交后调用javascript:
String javascript = "function redirectAfterFormSubmit(redirectUrl) {window.top.location.href = redirectUrl;}";
pdfStamper.addJavaScript(javascript);
PdfAction action = PdfAction.createSubmitForm(SERVLET_URL, null, PdfAction.SUBMIT_HTML_FORMAT);
action.next(PdfAction.javaScript(String.format("redirectAfterFormSubmit('%s')", REDIRECT_URL), pdfStamper.getWriter()));
但它不起作用。如果我显示控制台,我可以看到错误消息:
ReferenceError: window is not defined
谢谢你的帮助 ;)