簡體   English   中英

iText 7 和 C# 從 MemoryStream 寫入 PDF 文件?

[英]iText 7 and C# writing a PDF file from MemoryStream?

我有一個在 MemoryStream 中創建的 PDF 文檔(使用 iText 7/C# 4.01),最后,我想把它寫到一個文件中。 我在 memory stream 中創建它的部分原因是我想在 header 表和頁腳上加蓋戳,然后在文件末尾寫出一個文件,然后希望避免寫回文件一個新文件(就像我在 iText 網站上不斷找到的示例一樣)。 但是,我似乎在下面的代碼中有某種雞/蛋場景。 看來您必須關閉()文檔才能使 iText 完全形成它。 但是,如果我 Close() 它,那么在嘗試編寫它時會得到一個 ObjectDisposedException (下面的簡化示例)。 我必須在這里遺漏一些簡單的東西,對吧? 謝謝

    MemoryStream baos = new MemoryStream();
    PdfWriter writer = new PdfWriter(baos);
    PdfDocument pdfDocument = new PdfDocument(writer.SetSmartMode(true));
    //writer.SetCloseStream(true);
    //pdfDocument.SetCloseWriter(true);
    //pdfDocument.SetCloseReader(true);
    //pdfDocument.SetFlushUnusedObjects(true);
    Document d = new Document(pdfDocument, iText.Kernel.Geom.PageSize.LETTER);
    d.Add(new Paragraph("Hello world!"));
    //d.Close();

    FileStream file = new FileStream("C:\test.pdf", 
    FileMode.Create, FileAccess.Write);
    baos. WriteTo(file);
    file.Close();
    //baos.Close();
    //d.Close();

嘗試這個

我沒有 IDE 進行測試,但我認為這項工作

MemoryStream baos = new MemoryStream();
PdfWriter writer = new PdfWriter(baos);
PdfDocument pdfDocument = new PdfDocument(writer.SetSmartMode(true));

Document d = new Document(pdfDocument, iText.Kernel.Geom.PageSize.LETTER);
d.Add(new Paragraph("Hello world!"));

d.Close();

byte[] byte1 = baos.ToArray();
File(byte1, "application/pdf", "C:\\iTextTester\\test.pdf");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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