我正在使用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
你能告訴我們的代碼,它的那種努力幫助離不開它。 – Codexer 2014-10-30 01:20:49
這裏有兩個相關但非常不同的問題部分,1),製作PDF和2),將二進制內容傳輸到瀏覽器。對於#1,將文件保存到服務器的磁盤,通過FTP下載並進行完整性檢查。傳遞所有的查詢字符串和任何你想要的,並手動傳輸和驗證每個文件。一旦你確定工作正常,那麼你可以100%忽略iText,並只處理二進制內容傳輸到瀏覽器。 – 2014-10-30 01:55:00
這是@ChrisHaas的好建議。在確定文件在磁盤上正確創建之後。您可以調整您的應用程序,以便它將內存流發送到瀏覽器(而不是將文件存儲在磁盤上)。如果這適用於某些瀏覽器而不適用於其他瀏覽器,則與iTextSharp相關的問題相反,您遇到瀏覽器相關問題。有時,設置正確的HTTP標頭可以提供幫助,尤其是定義PDF流字節大小的標頭。見http://itextpdf.com/examples/iia.php?id=173 – 2014-10-30 11:20:22