簡體   English   中英

iTextSharp由於某種原因沒有寫入MemoryStream

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM