4

我必须创建一个工具,将它们的创建日期添加到几个 .pdf 文件名中。我想使用内部存储在 pdf 中的创建日期,为此我下载了 iText 社区版。

现在,我的代码是这样开始的(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,我会在 map 中找到一个 /Creationdate 标签,所以我想使用它,但是,虽然它通常采用 D:20160704132234+02'00' 格式,但有时我会发现一些看起来像二进制数据的东西,我不知道如何解码。

有没有更好的方法来获取创建日期?

谢谢

斯特凡诺

4

1 回答 1

4

The creation date is a PDF string value. There are two ways to represent a string. You already know this way: (D:20160704132234+02'00'), but there's also a hexadecimal notation, for instance: <443A32303136303730343133323233342b303227303027>.

When you have a PdfString, you can get the value in different ways: there's toString(), but there's also toUnicodeString(). When you have a String version, you can get a Calendar object from the PdfDate class:

Calendar date = PdfDate.decode(s);

If you want the date in W3C format, you can do something like this:

string w3cDate = PdfDate.getW3CDate(s);
于 2016-07-18T02:15:59.443 回答