我一直在尋找到例如ABCPDF的使用: Examples of ABC PDF使用ABCPDF在內存中生成,而不是保存文件的物理驅動器上
的問題是:它總是保存在物理驅動器上的文件。有什麼辦法在內存中生成PDF文檔,並使用內容配置呈現該文檔
謝謝
我一直在尋找到例如ABCPDF的使用: Examples of ABC PDF使用ABCPDF在內存中生成,而不是保存文件的物理驅動器上
的問題是:它總是保存在物理驅動器上的文件。有什麼辦法在內存中生成PDF文檔,並使用內容配置呈現該文檔
謝謝
貌似Save()
功能是能夠採取Stream
。新建一個MemoryStream
並將其保存至此。
http://www.websupergoo.com/helppdfnet/source/5-abcpdf/doc/1-methods/save.htm
此外,Attachment
需要Stream
。
所以:
Attachment data = new Attachment(yourMemoryStream, MediaTypesNames.Application.Pdf);
ContentDisposition disposition = data.ContentDisposition;
使用Doc.GetData獲得PDF作爲字節數組。如果這種類型的原始數據是你想要的,那麼這將比使用MemoryStream更有效。
您可以使用ABCPDF中的GetData()
函數將PDF傳遞到流。 然後用適當的標題信息將字節寫出到瀏覽器。
Dim pdfbytestream as Byte() = oPDF.GetData()
oPDF.Dispose() 'free up unused object
Dim myRandomID As String = Year(Now()).ToString + Month(Now()).ToString + Day(Now()).ToString + Hour(Now()).ToString + Minute(Now()).ToString + Second(Now()).ToString
'Write it out to the browser.
Response.ClearHeaders()
Response.ClearContent()
Response.ContentType = "application/pdf"
If pdfbytestream Is Nothing Then Response.AddHeader("content-length", 0) Else Response.AddHeader("content-length", pdfbytestream.Length.ToString())
Response.AddHeader("content-disposition", "inline; filename=" & myRandomID & ".pdf?" & Now.Millisecond)
Response.BinaryWrite(pdfbytestream)
保存寫入流,所以爲什麼你不保存到內存流? – rene