修改 pdf 元数据 XMP

Modify pdf metadata XMP

我想使用 iText 或类似库修改 pdf 格式的现有元数据 XMP。

我通过 com.itextpdf.text.pdf.PdfReader.getMetadata() 获取 xmp 字符串 下面我们有例子 xmp

<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.2-c001 63.139439, 2010/09/27-13:37:26        ">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:dc="http://purl.org/dc/elements/1.1/">
         <dc:format>application/pdf</dc:format>
         <dc:identifier>10.1016/j.aipprr.2017.03.003</dc:identifier>
         <dc:title>
            <rdf:Alt>
               <rdf:li xml:lang="x-default">Prólogo</rdf:li>
            </rdf:Alt>
         </dc:title>
         <dc:creator>
            <rdf:Seq>
               <rdf:li>Rolando Díaz-Loving</rdf:li>
            </rdf:Seq>
         </dc:creator>
         <dc:description>
            <rdf:Alt>
               <rdf:li xml:lang="x-default">Acta de Investigación Psicológica , 7 (2017) 2559. doi:10.1016/j.aipprr.2017.03.003</rdf:li>
            </rdf:Alt>
         </dc:description>
         <dc:publisher>
            <rdf:Bag>
               <rdf:li>Universidad Nacional Autónoma de México, Facultad de Psicología</rdf:li>
            </rdf:Bag>
         </dc:publisher>
      </rdf:Description>
      <rdf:Description rdf:about=""
            xmlns:prism="http://prismstandard.org/namespaces/basic/3.0/">
         <prism:aggregationType>journal</prism:aggregationType>
         <prism:publicationName>Acta de Investigación Psicológica </prism:publicationName>
         <prism:copyright>© 2017 Universidad Nacional Autónoma de México, Facultad de Psicología. This is an open access article under the CC BY-NC-ND license (http://creativecommons.org/licenses/by-nc-nd/4.0/).</prism:copyright>
         <prism:issn>2007-4719</prism:issn>
         <prism:volume>7</prism:volume>
         <prism:number>1</prism:number>
         <prism:coverDisplayDate>April 2017</prism:coverDisplayDate>
         <prism:pageRange>2559</prism:pageRange>
         <prism:startingPage>2559</prism:startingPage>
         <prism:doi>10.1016/j.aipprr.2017.03.003</prism:doi>
         <prism:url>http://dx.doi.org/10.1016/j.aipprr.2017.03.003</prism:url>
      </rdf:Description>
      <rdf:Description rdf:about=""
            xmlns:crossmark="http://crossref.org/crossmark/1.0/">
         <crossmark:MajorVersionDate>2010-04-23</crossmark:MajorVersionDate>
         <crossmark:CrossmarkDomainExclusive>true</crossmark:CrossmarkDomainExclusive>
         <crossmark:DOI>10.1016/j.aipprr.2017.03.003</crossmark:DOI>
         <crossmark:CrossMarkDomains>
            <rdf:Seq>
               <rdf:li>elsevier.com</rdf:li>
               <rdf:li>sciencedirect.com</rdf:li>
            </rdf:Seq>
         </crossmark:CrossMarkDomains>
      </rdf:Description>
      <rdf:Description rdf:about=""
            xmlns:jav="http://www.niso.org/schemas/jav/1.0/">
         <jav:journal_article_version>VoR</jav:journal_article_version>
      </rdf:Description>
      <rdf:Description rdf:about=""
            xmlns:pdfx="http://ns.adobe.com/pdfx/1.3/">
         <pdfx:ElsevierWebPDFSpecifications>6.5</pdfx:ElsevierWebPDFSpecifications>
         <pdfx:doi>10.1016/j.aipprr.2017.03.003</pdfx:doi>
         <pdfx:robots>noindex</pdfx:robots>
         <pdfx:CrossmarkMajorVersionDate>2010-04-23</pdfx:CrossmarkMajorVersionDate>
         <pdfx:CrossmarkDomainExclusive>true</pdfx:CrossmarkDomainExclusive>
         <pdfx:CrossMarkDomainsↂ005B1ↂ005D>sciencedirect.com</pdfx:CrossMarkDomainsↂ005B1ↂ005D>
         <pdfx:CrossMarkDomainsↂ005B2ↂ005D>elsevier.com</pdfx:CrossMarkDomainsↂ005B2ↂ005D>
         <pdfx:CrossMarkDomains>
            <rdf:Seq>
               <rdf:li>sciencedirect.com</rdf:li>
               <rdf:li>elsevier.com</rdf:li>
            </rdf:Seq>
         </pdfx:CrossMarkDomains>
      </rdf:Description>
      <rdf:Description rdf:about=""
            xmlns:xmp="http://ns.adobe.com/xap/1.0/">
         <xmp:CreatorTool>Elsevier</xmp:CreatorTool>
         <xmp:ModifyDate>2017-05-25T20:23:38-05:00</xmp:ModifyDate>
         <xmp:CreateDate>2017-05-03T16:07:41Z</xmp:CreateDate>
         <xmp:MetadataDate>2017-05-25T20:23:38-05:00</xmp:MetadataDate>
      </rdf:Description>
      <rdf:Description rdf:about=""
            xmlns:xmpRights="http://ns.adobe.com/xap/1.0/rights/">
         <xmpRights:Marked>True</xmpRights:Marked>
      </rdf:Description>
      <rdf:Description rdf:about=""
            xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
         <pdf:Trapped>True</pdf:Trapped>
         <pdf:Producer>Acrobat Distiller 9.0.0 (Windows)</pdf:Producer>
         <pdf:Keywords/>
      </rdf:Description>
      <rdf:Description rdf:about=""
            xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/">
         <xmpMM:DocumentID>uuid:9d0cc73b-66d9-4125-9685-0f38e1653c8b</xmpMM:DocumentID>
         <xmpMM:InstanceID>uuid:a666df63-92f4-44d1-8d4a-4a61bc95b979</xmpMM:InstanceID>
      </rdf:Description>
      <rdf:Description rdf:about=""
            xmlns:ali="http://www.niso.org/schemas/ali/1.0/">
         <ali:license_ref>
            <rdf:Bag>
               <rdf:li rdf:parseType="Resource">
                  <ali:uri>http://creativecommons.org/licenses/by-nc-nd/4.0/</ali:uri>
               </rdf:li>
            </rdf:Bag>
         </ali:license_ref>
      </rdf:Description>
   </rdf:RDF>
</x:xmpmeta>                      
<?xpacket end="w"?>

现在我想用当前时间戳修改 <xmp:ModifyDate>2017-05-25T20:23:38-05:00</xmp:ModifyDate>,但实际上我不知道如何在不进行字面字符串解析的情况下进行修改。有没有允许修改xmp的库?

最后我使用了 iText 库中的 XmpReader.replaceNode。