PDF 文件似乎有一组单独的文件属性,其中包含(除其他外)创建日期和修改日期(参见此处的屏幕截图:http://ventajamarketing.com/writingblog/wp-content/uploads/2012/02/Acrobat-Document-Properties1-300x297.png)。
这些日期显然与文件系统(Windows 资源管理器)中显示的创建和修改日期不同。
我如何访问 PDF 文件中的日期信息并Windows 7
使用Windows PowerShell
(或者可能是另一种方法)读出它?
答案1
您可以像阅读文本一样阅读 PDF 文件(至少在较新的格式中可以)。您将发现一个使用 Adobe XMP 架构的嵌入式 XML 部分。它包含您需要的元数据。
以下是一个例子:
%PDF-1.5
%âãÏÓ
2 0 obj
<<
/AcroForm 4 0 R
/Lang (en-GB)
/MarkInfo <<
/Marked true
>>
/Metadata 5 0 R
/Pages 6 0 R
/StructTreeRoot 7 0 R
/Type /Catalog
>>
endobj
5 0 obj
<<
/Length 2971
/Subtype /XML
/Type /Metadata
>>
stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.1.2">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/">
<xmp:CreateDate>2014-03-05T15:03:02+01:00</xmp:CreateDate>
<xmp:ModifyDate>2014-05-30T11:58:02+01:00</xmp:ModifyDate>
<xmp:MetadataDate>2014-03-05T14:03:46Z</xmp:MetadataDate>
</rdf:Description>
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/">
<xmpMM:DocumentID>uuid:8b5fe011-ed77-4298-aa84-d1eda797b9ff</xmpMM:DocumentID>
<xmpMM:InstanceID>uuid:88074e0b-42f7-4268-bc89-0162e417c9ad</xmpMM:InstanceID>
</rdf:Description>
<rdf:Description rdf:about=""
xmlns:dc="http://purl.org/dc/elements/1.1/">
<dc:format>application/pdf</dc:format>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
以下示例将检索创建日期:
$a = Select-String "CreateDate\>(.*)\<" .\filename.pdf
返回的内容类似如下:
filename.pdf:20: <xap:CreateDate>2009-11-03T10:54:29Z</xap:CreateDate>
filename.pdf:12921: <xap:CreateDate>2009-11-03T10:54:29Z</xap:CreateDate>
获取准确数据:
$a.Matches.Groups[1]
返回:
2009-11-03T10:54:29Z
答案2
首先,您需要访问能够读取文档属性的.net 库,因为这些不是本机 shell 属性: http://sourceforge.net/projects/itextsharp/
接下来,您需要查看从 pdf 中编写脚本的对象,例如:
# load ITextSHarp.dll
[System.Reflection.Assembly]::LoadFrom("C:\users\testuser\desktop\itextsharp.dll")
$raf = New-object iTextSharp.text.pdf.RandomAccessFileOrArray("C:\users\testuser\desktop\bitcoin.pdf")
# load pdf properties
$reader = New-object iTextSharp.text.pdf.PdfReader($raf, $Nothing)
$reader