Loading an iTextSharp Document into MemoryStream
我正在开发一个ASP.NET应用程序,在该应用程序中,我必须发送一个基于页面上常规创建的表作为电子邮件附件的PDF。所以我有一个函数,创建PDF作为ITextSharp文档并返回它。如果我试图保存此文档,它会正常工作,但我尝试将其转换为流时遇到了困难。我已经试过几次了,但总有一天我会被卡住。
我试图将其序列化,但文档似乎不可序列化。然后我尝试使用pdfcopy,但我找不到如何将其具体用于我的问题。
现在的代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 | //Table,string,string,Stream //This document returns fine Document document = Utils.GeneratePDF(table, lastBook, lastDate, Response.OutputStream); using (MemoryStream ms = new MemoryStream()) { PdfCopy copy = new PdfCopy(document, ms); //Need something here to copy from one to another! OR to make document as Stream ms.Position = 0; //Email, Subject, Stream Utils.SendMail(email, lastBook +" -" + lastDate, ms); } |
尽量避免传递本地ITextSharp对象。传递流、文件或字节。我现在没有一个IDE,但是你应该可以这样做:
1 2 3 4 5 | byte[] Bytes; using(MemoryStream ms = new MemoryStream()){ Utils.GeneratePDF(table, lastBook, lastDate, ms); Bytes = ms.ToArray(); } |
然后,您可以更改
编辑
您也可以在代码中这样做:
1 2 3 4 5 | using(MemoryStream ms = new MemoryStream()){ Utils.GeneratePDF(table, lastBook, lastDate, ms); ms.Position = 0; Utils.SendMail(email, lastBook +" -" + lastDate, ms); } |
我过去做过这样的事情:
1 2 3 4 5 6 7 |
如果您需要访问原始数据,也可以
1 | byte[] pdfData = msPDFData.ToArray(); |