使用 ABCPDF 在内存中生成文档,而不是保存在物理驱动器上
本文关键字:保存 存在物 驱动器 内存 ABCPDF 文档 使用 | 更新日期: 2023-09-27 18:25:17
我正在使用以下内容研究ABCPDF的示例:ABC PDF 示例
问题是:它始终将文档保存在物理驱动器上。有没有办法在内存中生成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)