Vb.net Itextsharp多动作在Chrome中工作,但在IE中不工作

Vb.net Itextsharp多动作在Chrome中工作,但在IE中不工作,vb.net,webforms,itextsharp,Vb.net,Webforms,Itextsharp,我看了这个Stackoverflow问题,但是我仍然不能正确地执行它。这是购买iTextSharp许可证之前的概念证明 这就是背景。我正在开发一个用vb.net编写的web窗体web应用程序。我打开一个新的浏览器窗口,在iframe中显示PDF。PDF包含用户可以填写的表单字段。在表单底部,将有一个提交按钮来处理表单,还有一个保存进度按钮来保存当前更改。处理/保存表单后,它应该重定向到一个HTML页面,上面写着“表单提交成功”。我在Google Chrome上都能做到这一点,但它没有在IE中重定

我看了这个Stackoverflow问题,但是我仍然不能正确地执行它。这是购买iTextSharp许可证之前的概念证明

这就是背景。我正在开发一个用vb.net编写的web窗体web应用程序。我打开一个新的浏览器窗口,在iframe中显示PDF。PDF包含用户可以填写的表单字段。在表单底部,将有一个提交按钮来处理表单,还有一个保存进度按钮来保存当前更改。处理/保存表单后,它应该重定向到一个HTML页面,上面写着“表单提交成功”。我在Google Chrome上都能做到这一点,但它没有在IE中重定向到HTML页面

我们将从我们的客户那里得到很多PDF。在Acrobat中创建PDF表单时,我将两个按钮添加到PDF的底部。这确保了按钮的正确位置,基于它适合该PDF的位置。因此,按钮将始终具有相同的名称,“btnSaveProgress”和“btnProcessForm”

在iframe源代码的codebehind中,我有以下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浏览器中的阅读器有严格的关系,我无法控制它。但是如果
stamper.ViewerPreferences=PdfWriter.HideToolbar
可以工作那就太好了


非常感谢您提供的任何建议/意见。

另请参阅与您在MSIE中看到的问题相匹配的问题。那就是:没什么。您没有使用最佳实践。正如《iText in Action-第二版》一书中所解释的,直接将PDF字节写入
响应.OutputStream
不是一个好主意,因为某些浏览器(如MSIE)要求您至少在HTTP头中设置内容长度。另请参见Chris Haas对此问题的回答:实际上,我的评论可能是错误的,因为PDF显示在MSIE中,但HTML不会显示在iFrame中。这并不意味着多个操作不起作用,也不意味着存在iTextSharp问题,毕竟:在Chrome上“起作用”的文件与在MSIE上“不起作用”的文件相同。在这种情况下,罪魁祸首是浏览器/PDF查看器的组合。这绝对不是iTextSharp的问题。我是@BrunoLowagie的,问题与浏览器/服务器有关,与iTextSharp无关。另外,在说
stamper.ViewerPreferences=PdfWriter.HideToolbar
不起作用时要小心,因为它绝对起作用,只是并不是每个渲染器都能按照您想要/期望的方式解释提示。还请记住,在编写PDF规范时,这些新型浏览器渲染器甚至不是一个概念。