我查看了这个Stackoverflow问题iTextSharp multiple actions for pushbuttonfield,但我仍然无法正常工作。在我们购买iTextSharp许可证之前,这是一个概念验证。
所以这是背景。我正在使用vb.net编写的Web表单Web应用程序。我打开一个新的浏览器窗口以在iframe中显示PDF。 PDF包含表单字段,用户可以填写。在表单的底部,将有一个用于处理表单的提交按钮和一个用于保存当前更改的保存进度按钮。在处理/保存表单后,它应该重定向到一个HTML页面,上面写着“表单已成功提交”。我已经将这一切都在谷歌浏览器中工作,但它没有重定向到IE中的HTML页面。
我们将从客户那里获得大量PDF文件。当我在Acrobat中创建PDF表单时,我将2个按钮添加到PDF的底部。这可以确保按钮的正确位置,具体取决于它适合该PDF的位置。因此按钮将始终具有相同的名称,“btnSaveProgress”和“btnProcessForm”。
在iframe源码的代码隐藏中,我有这个iTextSharp代码:
Using myPdfReader As New PdfReader(strFullFilePathName)
Context.Response.Clear()
Context.Response.ContentType = "application/pdf"
Using stamper As PdfStamper = New PdfStamper(myPdfReader, Response.OutputStream)
stamper.ViewerPreferences = PdfWriter.HideToolbar
Dim hostUrl As String = Request.Url.GetLeftPart(UriPartial.Authority)
Dim btnArray() As String = {"btnSaveProgress", "btnProcessForm"}
Dim intCounter = 0
For Each btnName As String In btnArray
Dim saveButtonField As PushbuttonField = stamper.AcroFields.GetNewPushbuttonFromField(btnName)
Dim pff As PdfFormField = saveButtonField.Field
Dim myAction As PdfAction = PdfAction.CreateSubmitForm("../../Common/Services/StaticFormSubmissionHandler.ashx?submissionType=" & intCounter & "&formID=" & intFormID & "&resultID=" & intResultID & "&templateName=" & Server.UrlEncode(sShortName), Nothing, PdfAction.SUBMIT_EXCL_F_KEY)
myAction.Next(New PdfAction(hostUrl & "/Main/Pages/FormSub.htm"))
'pff.SetAdditionalActions(PdfName.U, myAction)
pff.Action = myAction
stamper.AcroFields.ReplacePushbuttonField(btnName, pff)
intCounter += 1
Next
End Using
End Using
保存/流程提交有效,但重定向仅适用于Chrome。在IE中,它使iframe为空。我没有看到任何错误或任何错误。此外,在IE中,PDF显示菜单栏。我理解这是否与IE浏览器中的Reader严格相关,而我无法控制它。但如果stamper.ViewerPreferences = PdfWriter.HideToolbar
可行,那就太好了。
非常感谢您提出任何建议/意见。