微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何处置/关闭/释放 iText 7 对新创建的 pdf 的控制

如何解决如何处置/关闭/释放 iText 7 对新创建的 pdf 的控制

我可以使用 iText 7 创建多个 pdf 文档。但是,创建后我想发送一封包含新创建的 pdf 作为附件的电子邮件。这会导致共享冲突错误。请参阅下面的步骤。

首先,我有一个静态类来初始化名为 PDFLibrary 的 pdf:

public static PdfWriter CreateWriter(string Filepath)
{
    //set writer properties
    WriterProperties writerProperties = new WriterProperties();
    writerProperties.SetStandardEncryption(Encoding.ASCII.GetBytes(""),Encoding.ASCII.GetBytes("password"),EncryptionConstants.ALLOW_PRINTING,EncryptionConstants.ENCRYPTION_AES_128);
    PdfWriter writer = new PdfWriter(Filepath,writerProperties);
    //set compression level
    writer.SetCompressionLevel(9);  //0 = best speed,9 = best compression,-1 is default
    return writer;
}

public static PdfDocument CreatePDFDocument(PdfWriter Writer)
{
    return new PdfDocument(Writer);
}

public static Document CreateDocument(PdfDocument PDFDoc)
{
    Document document = new Document(PDFDoc);
    document.SetMargins(25,25,25);
    return document;
}

然后我引用了上面的类和方法

PdfWriter writer;
PdfDocument pdfDocument;
Document doc;

private void CreatePDFs(string PDFPath)
{
    writer = PDFLibrary.CreateWriter(PDFPath);
    pdfDocument = PDFLibrary.CreatePDFDocument(writer);
    doc = PDFLibrary.CreateDocument(pdfDocument);
}

最后(在添加表格和单元格以创建所需的 pdf 之后),我关闭了 pdf 对象:

private void CloseDocumentStreams()
{
    doc.Close();
    writer.SetCloseStream(true);
    writer.Close();
}

现在在发送电子邮件方法中尝试以下操作会导致“IOException:路径共享冲突”:

Attachment attachment = new Attachment(pathToPDF[i]);

有没有办法完全释放 iText 对文档的处理? example documentation显示 document.Close(),其中 document 是类型 Document

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。