首页 > 解决方案 > C#如何检查pdf文件是否打开(也使用itextsharp)

问题描述

我一直无法弄清楚如何在我的程序中检查 pdf 文档当前是否打开。这是一个主要问题,因为我的程序为我的客户创建了 pdf 文档,但我的客户通过打开它来查看她的文档并尝试在 pdf 文档打开时修复任何拼写错误,导致程序崩溃并丢失很多进度. 我尝试了几种方法来尝试检测程序是否打开,但无济于事。

该程序是一个 C# 桌面应用程序,用于使用 itextsharp 创建 pdf 文档。

有人可以给我一个声明,我可以用它来检查 pdf 是否打开或被另一个进程使用?在解决此问题之前,我的客户无法继续她的工作。

标签: c#pdfitext

解决方案


您应该像对待任何类型的文件一样这样做。

protected virtual bool IsFileInUse(FileInfo file)
{
    try
    {
          FileStream stream = file.Open(FileMode.Open, FileAccess.Read, FileShare.None);
          stream.Dispose();
    }
    catch (IOException)
    {
       //Could not access because file is in use.
        return true;
    }


//file is not in use
return false;
}

FileShare.None 保证当您拥有访问权限时,其他人无法打开文件进行修改。

注意:如果阅读器已加载文件流然后关闭文件,这可能不起作用。但是我想这对你来说不是问题。


推荐阅读