PdfSharp不会更改文件系统信息

问题描述 投票:-1回答:2

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

我可以显然更改属性,但不能让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文件资源管理器中,我看不到任何变化(例如,也没有titleauthor)。最后修改日期更改为我运行代码时。 如何持续更改此信息? 编辑: 当我用记事本打开它时,我可以看到该行:

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

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

c# pdf explorer pdfsharp file-attributes
2个回答
2
投票

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

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


-1
投票

感谢Antry的评论:

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

PdfSharp对于这项任务来说太过分了。

© www.soinside.com 2019 - 2024. All rights reserved.