PdfSharp не меняет информацию о файловой системе - PullRequest
0 голосов
/ 20 марта 2019

Я пишу программу, которая изменяет дату изменения всех файлов в каталоге.

Я могу изменить свойства, но окна не смогут их распознать.

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 я не вижу никаких изменений (например, title и author). Дата последнего изменения меняется на время, когда я запускаю код.
Как я могу постоянно изменять эту информацию?

Edit:
Когда я открываю его с помощью блокнота, я вижу строку:

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

Почему проводник не отображает эту информацию?

Ответы [ 2 ]

2 голосов
/ 20 марта 2019

Почему проводник не отображает эту информацию?

Поскольку в вашем коде указана внутренняя дата изменения PDF, она хранится в виде метаданных внутри этого PDF. Эта дата намеренно не имеет ничего общего с временными метками файлов Windows, так как они могут быть легко установлены на произвольные значения всеми видами инструментов, в то время как дата изменения PDF может быть установлена ​​только инструментом редактора PDF.

0 голосов
/ 20 марта 2019

Благодаря комментарию Antry:

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

PdfSharp является излишним для этой задачи.

...