使用 ABCPDF 在内存中生成文档,而不是保存在物理驱动器上

本文关键字:保存 存在物 驱动器 内存 ABCPDF 文档 使用 | 更新日期: 2023-09-27 18:25:17

我正在使用以下内容研究ABCPDF的示例:ABC PDF 示例

问题是:它始终将文档保存在物理驱动器上。有没有办法在内存中生成PDF文档并使用内容处置来呈现文档

谢谢

使用 ABCPDF 在内存中生成文档,而不是保存在物理驱动器上

看起来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)