Получите дату создания файла PDF с помощью iText 7

Мне нужно создать инструмент, который добавляет к нескольким именам файлов .pdf дату их создания. Я хотел бы использовать дату создания, хранящуюся внутри в формате PDF, и для этого я скачал iText Community Edition.

Теперь мой код начинается так (VB)

Module Module1

    Sub Main()

        Dim filename As String = My.Application.CommandLineArgs(0)

        Dim PDFReader = New Pdf.PdfReader(filename)
        Dim PDFDocument = New Pdf.PdfDocument(PDFReader)

        Dim documentinfo As Pdf.PdfDocumentInfo = PDFDocument.GetDocumentInfo

        Dim author As String = documentinfo.GetAuthor
        Dim creator As String = documentinfo.GetCreator
        Dim mypdfobject = documentinfo.GetPdfObject

    End Sub

End Module

Я получил GetAuthor и GetCreator вместе с несколькими другими методами Get, но не могу найти что-то вроде GetCreationDate, только AddCreationDate.

Если я пойду дальше в mypdfobject, я найду на карте тег /Creationdate, поэтому я решил использовать его, но, хотя он часто имеет формат D: 20160704132234 + 02'00', иногда я нахожу что-то, что кажется двоичными данными, и я не знаю, как это расшифровать.

Есть ли лучший способ получить дату создания?

Спасибо

Стефано


person Stefano Bertolucci    schedule 17.07.2016    source источник
comment
Дата создания — это строковое значение PDF. Есть два способа представления строки. Вы уже знаете такой способ: (D:20160704132234+02'00'), но есть и шестнадцатеричная запись, например: <443A32303136303730343133323233342b303227303027>. Последнее кажется вам знакомым, когда вы говорите Я нашел что-то похожее на двоичные данные и не знаю, как это расшифровать?   -  person Bruno Lowagie    schedule 18.07.2016


Ответы (1)


Дата создания — это строковое значение PDF. Есть два способа представления строки. Вы уже знаете такой способ: (D:20160704132234+02'00'), но есть и шестнадцатеричная запись, например: <443A32303136303730343133323233342b303227303027>.

Когда у вас есть PdfString, вы можете получить значение разными способами: есть toString(), но есть и toUnicodeString(). Когда у вас есть версия String, вы можете получить объект Calendar из класса PdfDate:

Calendar date = PdfDate.decode(s);

Если вам нужна дата в формате W3C, вы можете сделать что-то вроде этого:

string w3cDate = PdfDate.getW3CDate(s);
person Bruno Lowagie    schedule 18.07.2016
comment
В Visual Studio при отладке я нахожу - person Stefano Bertolucci; 19.07.2016
comment
Значение {�%�������NR��q��} (это двоичная форма, которую я говорю) - person Stefano Bertolucci; 19.07.2016
comment
content {Length=16}, так что это 16 байт - person Stefano Bertolucci; 19.07.2016
comment
косвенная ссылка Ничего - person Stefano Bertolucci; 19.07.2016
comment
состояние 0 (я не знаю значения) - person Stefano Bertolucci; 19.07.2016
comment
Так что это не похоже на шестнадцатеричную строку, которую вы упомянули. - person Stefano Bertolucci; 19.07.2016
comment
Он может быть зашифрован, так как есть подозрительный decryptInfoNum 18. - person Stefano Bertolucci; 19.07.2016