2014-10-29 72 views
0

我正在使用VB.NET,Framwork 4.5。的Visual Studio 2013年iTextSharp MemoryStream在使用showmodaldialog時無法在IE9中工作

我使用iTextSharp的版本5.5.3.0

我能當我通過查詢字符串值,我直接打開頁面,通過一個aspx頁面生成正確使用memorystream PDF文件。

但是,當我嘗試通過showmodaldialog在IE9中打開同一頁面時(對不起,我們的企業中出現這種情況,絕對無法更改),pdf未顯示「打開」或「另存爲..」對話框,它只是顯示一個空白頁面,沒有任何反應。

有人可以告訴我,當使用IE9和showmodaldialog時使用itextsharp是否有一個捕獲?

我不得不使用隱藏的iframe和javascript函數來加載iframe中的頁面,因此它在同一個窗口中顯示「另存爲...」對話框。

它的工作與iframe但我很好奇這是怎麼回事用showmodaldialog

這裏的精選母版頁代碼查詢字符串參數發送到modaldialog

case 'report': 
      mypage = 'pdfreport.aspx?mode=Individual&loteid=' + $('#IDLabel').text() + '&idah=' + param + '&invid=' + $('#hdfInventoryID').val() 
      //alert(mypage) 
      var width = '1000' 
      var height = '685' 
      var left = '20' 
      var top = '0' 
      break; 
    } 
    //alert(mypage) 
    var r = window.showModalDialog(mypage, 'mywindow', 'left:'+left+';top:'+top+';dialogWidth:' + width + 'px;dialogHeight:' + height + 'px;toolbar:0;resizable:0'); 

而這裏的在showModalDialog代碼生成pdf:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 


    Dim document As Document = New Document 
    Dim output2 As MemoryStream = New MemoryStream() 
    Dim writer As PdfWriter = PdfWriter.GetInstance(document, output2) 

    document.SetPageSize(PageSize.LETTER) 
    document.SetMargins(50, 50, 25, 25) 
    document.Open() 
    ''code to generate the pdf document 
    document.Close() 
    Response.ClearContent() 
    Response.ClearHeaders() 
    Response.ContentType = "application/pdf" 
    Dim filename As String 
    filename = "Filename" 
    Response.AddHeader("Content-Disposition", String.Format("attachment;filename={0}.pdf", filename)) 
    Response.BinaryWrite(output2.ToArray()) 

End Sub 
+0

你能告訴我們的代碼,它的那種努力幫助離不開它。 – Codexer 2014-10-30 01:20:49

+1

這裏有兩個相關但非常不同的問題部分,1),製作PDF和2),將二進制內容傳輸到瀏覽器。對於#1,將文件保存到服務器的磁盤,通過FTP下載並進行完整性檢查。傳遞所有的查詢字符串和任何你想要的,並手動傳輸和驗證每個文件。一旦你確定工作正常,那麼你可以100%忽略iText,並只處理二進制內容傳輸到瀏覽器。 – 2014-10-30 01:55:00

+0

這是@ChrisHaas的好建議。在確定文件在磁盤上正確創建之後。您可以調整您的應用程序,以便它將內存流發送到瀏覽器(而不是將文件存儲在磁盤上)。如果這適用於某些瀏覽器而不適用於其他瀏覽器,則與iTextSharp相關的問題相反,您遇到瀏覽器相關問題。有時,設置正確的HTTP標頭可以提供幫助,尤其是定義PDF流字節大小的標頭。見http://itextpdf.com/examples/iia.php?id=173 – 2014-10-30 11:20:22

回答

0

不幸的是,我沒有我的筆記本電腦與我來測試這個,但它似乎有一個已知的錯誤?在打開的頁面上使用showmodaldialogPage_Load,一旦我開始工作,我會嘗試這些答案。

乾杯,