使用 C# 评估 iText7

Rob*_*rtT 3 itext7

评估 iText7 并尝试在内存中创建 PDF,然后将该流的内容写回客户端或将流保存到物理文件中。我正在使用此链接作为指南。

我的代码片段

1  pdfMemoryStream = new ByteArrayOutputStream();
2  pdfMemoryStream = new ByteArrayOutputStream();
3  pdfWriter = new PdfWriter(pdfMemoryStream);
4  pdfDocument = new PdfDocument(pdfWriter);
5  document = new Document(pdfDocument, PageSize.LETTER, true);
6  document.Add(new Paragraph("Testing"));
7  document.Close();
8  var fstream = new FileStream(@"C:\publish\iTextQuoteM.pdf", FileMode.Create);
9  pdfMemoryStream.WriteTo(fstream);
10 pdfMemoryStream.Flush();
11 pdfMemoryStream.Close();
Run Code Online (Sandbox Code Playgroud)

第 9 行将抛出一个Cannot access a closed Stream有意义的异常,但如果我删除第 7 行,则创建的 pdf 无效且不可见。我试图刷新pdfWriter和文档,但这没有帮助。

显然我有问题或误解,任何帮助表示赞赏。

Mic*_*rke 5

PdfWriter构造函数接受System.IO.MemoryStream,所以你可以做以下的PDF写入MemoryStream,并返回一个字节数组:

byte[] result;

using (var memoryStream = new MemoryStream())
{
    var pdfWriter = new PdfWriter(memoryStream);
    var pdfDocument = new PdfDocument(pdfWriter);
    var document = new Document(pdfDocument, PageSize.LETTER, true);
    document.Add(new Paragraph("Testing"));
    document.Close();

    result = memoryStream.ToArray();
}

File.WriteAllBytes(@"C:\publish\iTextQuoteM.pdf", result);
Run Code Online (Sandbox Code Playgroud)