[英]iTextSharp for some reason is not writing to MemoryStream
我的代碼
using (iTextSharp.text.Document document = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4.Rotate()))
{
MemoryStream memoryStream = new MemoryStream();
PdfWriter.GetInstance(document, memoryStream);
document.Open();
List<IElement> objects = HTMLWorker.ParseToList(new StringReader(html), null);
foreach (IElement element in objects)
{
if (element.Chunks.Select(x => x.Content).Contains("page_break_here")) document.Add(Chunk.NEXTPAGE);
else document.Add(element);
}
byte[] docArray = memoryStream.ToArray();
}
memoryStream.Length是16
當我嘗試這個:
PdfWriter.GetInstance(document, new FileStream(fullPdfFileAddress, FileMode.Create));
它創建文件很好,但我需要將其寫入memoryStream。
基於我的評論 :文檔只有在關閉時才會完全寫入流。 但是, PdfWriter
默認關閉關聯的流,從而產生ObjectDisposedException
。 您可以通過將其CloseStream
屬性設置為false
來防止這種情況發生:
using (var memoryStream = new MemoryStream())
{
using (var document = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4.Rotate()))
{
PdfWriter writer = PdfWriter.GetInstance(document, memoryStream);
writer.CloseStream = false;
// Write PDF here.
}
byte[] docArray = memoryStream.ToArray();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.