如何正确关闭 PDFTron 使用的文件?

How do I properly close a file used by PDFTron?

以下代码导致 System.InvalidOperationException,因为相关文件仍在使用中。 PDFTron 文档中没有关于如何关闭文件的明确指导,但以下会产生异常:

// in my dispose method. _pdfViewWpf is a pdftron.PDF.PDFViewWPF, and _pdfPath is the filepath I set the doc to. 
_pdfViewWpf.CloseDoc();
_pdfViewWpf.Dispose();

File.Move(_pdfPath, @"C:\myFilePath\Test.pdf");

我缺少什么才能让 PDFTron 正确释放和关闭文件?

我在 PDFDoc 上缺少 Dispose() 调用,我已将其设置为 PDFViewWPF 上的 Doc。我将其保存在私有成员变量中:

_pdfDoc = new PDFDoc(pdfPath);

并将这一行添加到我的处理方法中:

_pdfViewWpf.CloseDoc();
_pdfViewWpf.Dispose();
if (_pdfDoc != null) _pdfDoc.Dispose();

File.Move(_pdfPath, @"C:\myFilePath\Test.pdf");

现在 File.Move 方法可以正常工作而不会抛出异常。

感谢您对我们指南的反馈,我们会改进这一部分。我们的示例项目中确实有很多示例代码,因此您还可以在其中了解如何实际操作。

对于非交互式 PDF 处理,using 语句是确保在使用 PDFDoc 实例完成后立即释放文件句柄和内存的最简单方法。

对于交互式查看,您可以执行以下操作。

PDFDoc oldDoc = _pdfViewWpf.GetDoc();
_pdfViewWpf.CloseDoc();
// or instead of above line, if you want to reuse the viewer call 
//_pdfViewWpf.SetDoc(otherPDFDoc);
if(oldDoc != null) oldDoc.Close();