PdfSharp不会更改文件系统信息

时间:2019-03-20 10:40:53

标签: c# pdf explorer pdfsharp file-attributes

我正在编写一个程序,用于更改目录中所有文件的修改日期。

我可以明显地更改属性,但Windows无法识别。

private static void ChangeDateTypeOfFile(DateTime date, string filepath)
{
    int state = PdfReader.TestPdfFile(filepath);
    if (state != 0)
    {
        System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
        PdfDocument doc = PdfReader.Open(filepath);
        doc.Info.ModificationDate = date;
        doc.Save(filepath);
    }
    else
    {
        Console.WriteLine(state);
    }
}

当我在更改属性之前和之后阅读该属性时,我可以看到区别,并且似乎可以正常工作。但是,在Windows File Explorer中,我看不到任何更改(例如titleauthor也没有)。最后修改日期更改为我运行代码的时间。
如何持续更改此信息?

编辑:
当我用记事本打开它时,我可以看到以下行:

/ModDate(D:20070129000000+01'00') //Set the date to 2007

文件资源管理器为什么不显示此信息?

2 个答案:

答案 0 :(得分:2)

  

文件资源管理器为什么不显示此信息?

因为您的代码正在设置PDF的内部修改日期,该日期存储为该PDF内的元数据。该日期故意与Windows的文件时间戳无关,因为它们可以通过各种工具轻松地设置为任意值,而PDF修改日期只能由PDF编辑器工具设置。

答案 1 :(得分:-1)

感谢Antry的评论:

private static void ChangeDate(DateTime date, string filepath)
{
    File.SetLastWriteTime(filepath, date);
}

PdfSharp对于此任务来说是一个过大的杀伤力。