iText 7 和 C# 从 MemoryStream 写入 PDF 文件?
iText 7 and C# writing a PDF file from MemoryStream?
我有一个在 MemoryStream 中创建的 PDF 文档(使用 iText 7/C# 4.01),最后,我想将它写到一个文件中。我在内存流中创建它的部分原因是我想在最后标记页眉 table 和页脚,并希望避免将其写入文件然后读回文件,标记,然后写出一个新文件(就像我一直在 iText 网站上找到的例子一样)。但是,我似乎在下面的代码中遇到了某种 chicken/egg 场景。似乎您必须 Close() 文档才能使 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");
我有一个在 MemoryStream 中创建的 PDF 文档(使用 iText 7/C# 4.01),最后,我想将它写到一个文件中。我在内存流中创建它的部分原因是我想在最后标记页眉 table 和页脚,并希望避免将其写入文件然后读回文件,标记,然后写出一个新文件(就像我一直在 iText 网站上找到的例子一样)。但是,我似乎在下面的代码中遇到了某种 chicken/egg 场景。似乎您必须 Close() 文档才能使 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");