【问题标题】:Evaluating iText7 using C#使用 C# 评估 iText7
【发布时间】:2018-01-02 14:29:23
【问题描述】:

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

我的代码sn-p

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();

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

显然我有什么问题或误解,感谢任何帮助。

【问题讨论】:

  • “我使用这个link 作为指导。” - 当您评估 iText 7 时,该链接会指向带有 iText 5 示例的页面。作为 iText 7 API 是一个完整的大修,这个链接帮助你的机会很小......

标签: itext7


【解决方案1】:

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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 2011-06-13
    相关资源
    最近更新 更多