C#、iTextSharp 5.5.10 在文档关闭命令中显示 "Cannot access a closed file."

C#, iTextSharp 5.5.10 Shown "Cannot access a closed file." on document close command

我不知道如何解决这个问题,因为文档似乎在实际命令之前关闭,即使我再次输入命令打开它。请帮忙。

这是我的代码。当我单击该按钮时,它将执行此操作并且错误将发生在 doc.close() 行。它显示 "Cannot access a closed file." 即使我把 doc.open() 放在上面。

private void run_Click(object sender, EventArgs e)
    {
        Document doc = new Document(PageSize.A4);

        using(FileStream op = new FileStream("text.pdf", FileMode.Create))
        {
            PdfWriter wri = PdfWriter.GetInstance(doc, op);
            Paragraph p = new Paragraph("test");
            doc.Open();
            doc.Add(p);
        }

        using (FileStream op = new FileStream("text.pdf", FileMode.Append, FileAccess.Write))
        {

            PdfWriter wri = PdfWriter.GetInstance(doc, op);
            Paragraph p = new Paragraph("test2");
            doc.Open();
            doc.Add(p);
            doc.Close();
        }

    }

首先,通过附加PDF文件的方式向现有PDF添加一些内容是不正确的。如果您想将内容添加到现有 PDF,请勾选 ITextSharp insert text to an existing pdf

但是,如果你只是想让它工作,你只需要每次都创建一个新的 Document 实例。

private void run_Click(object sender, EventArgs e)
{
    Document doc = new Document(PageSize.A4);

    using(FileStream op = new FileStream("text.pdf", FileMode.Create))
    {
        PdfWriter wri = PdfWriter.GetInstance(doc, op);
        Paragraph p = new Paragraph("test");
        doc.Open();
        doc.Add(p);
    }

    using (FileStream op = new FileStream("text.pdf", FileMode.Append, FileAccess.Write))
    {
        doc = new Document(PageSize.A4); // this is the fix
        PdfWriter wri = PdfWriter.GetInstance(doc, op);
        Paragraph p = new Paragraph("test2");
        doc.Open();
        doc.Add(p);
        doc.Close();
    }
}