Использование xpath в Javascript для чтения языка метаданных XML-файла, изначально экспортированного из PDF

Кто-нибудь знает, какие метаданные в файле XML будут иметь языковой атрибут, установленный Adobe Acrobat в файле PDF, из которого файл XML был экспортирован? Я знаю, что язык уровня документа был установлен в PDF, потому что я сделал это сам и проверил PDF в свойствах Acrobat.

Но после экспорта из PDF в XML (используя Acrobat Export To...) единственная языковая спецификация документа, которую я вижу, это x-default (а не en-us) в элементе dc:title в метаданных. В теле документа я вижу EN-US, указанный для элементов <H1> и для 2 элементов <P>. (См. XML ниже.)

Я работаю в Javascript, кстати, используя XPath. Я хотел найти язык всего документа, а не поиск по различным элементам, таким как заголовки и абзацы.

<?xml version="1.0" encoding="UTF-8" ?>
<!-- Created from PDF via Acrobat SaveAsXML -->
<!-- Mapping Table version: 28-February-2003 -->
<TaggedPDF-doc>
<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c015 84.159810, 2016/09/10-02:41:30        ">
   <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/"
            xmlns:xmp="http://ns.adobe.com/xap/1.0/"
            xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
            xmlns:pdf="http://ns.adobe.com/pdf/1.3/"
            xmlns:pdfuaid="http://www.aiim.org/pdfua/ns/id/"
            xmlns:pdfaExtension="http://www.aiim.org/pdfa/ns/extension/"
            xmlns:pdfaSchema="http://www.aiim.org/pdfa/ns/schema#"
            xmlns:pdfaProperty="http://www.aiim.org/pdfa/ns/property#">
         <dc:format>xml</dc:format>
         <dc:creator>
            <rdf:Seq>
               <rdf:li>Example</rdf:li>
            </rdf:Seq>
         </dc:creator>
         **<dc:title>
            <rdf:Alt>
               <rdf:li xml:lang="x-default">LIFE'S MEANING IS 42</rdf:li>
            </rdf:Alt>
         </dc:title>**
         <xmp:CreatorTool>Microsoft Word</xmp:CreatorTool>
         <xmp:CreateDate>2017-02-23T00:54:03Z</xmp:CreateDate>
         <xmp:ModifyDate>2017-11-29T22:18:30-05:00</xmp:ModifyDate>
         <xmp:MetadataDate>2017-11-29T22:18:30-05:00</xmp:MetadataDate>
         <xmpMM:DocumentID>uuid:2174297D-1BFC-4214-98BF-073A968712F1</xmpMM:DocumentID>
         <xmpMM:InstanceID>uuid:77118f50-e6e9-4e1e-a5b3-e7d51d6f16fc</xmpMM:InstanceID>
         <pdf:Producer>Acrobat PDFMaker 15 for Word</pdf:Producer>
         <pdfuaid:part>1</pdfuaid:part>
         <pdfaExtension:schemas>
            <rdf:Bag>
               <rdf:li rdf:parseType="Resource">
                  <pdfaSchema:namespaceURI>http://ns.adobe.com/pdf/1.3/</pdfaSchema:namespaceURI>
                  <pdfaSchema:prefix>pdf</pdfaSchema:prefix>
                  <pdfaSchema:schema>Adobe PDF Schema</pdfaSchema:schema>
                  <pdfaSchema:property>
                     <rdf:Seq>
                        <rdf:li rdf:parseType="Resource">
                           <pdfaProperty:category>internal</pdfaProperty:category>
                           <pdfaProperty:description>A name object indicating whether the document has been modified to include trapping information</pdfaProperty:description>
                           <pdfaProperty:name>Trapped</pdfaProperty:name>
                           <pdfaProperty:valueType>Text</pdfaProperty:valueType>
                        </rdf:li>
                     </rdf:Seq>
                  </pdfaSchema:property>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <pdfaSchema:namespaceURI>http://ns.adobe.com/xap/1.0/mm/</pdfaSchema:namespaceURI>
                  <pdfaSchema:prefix>xmpMM</pdfaSchema:prefix>
                  <pdfaSchema:schema>XMP Media Management Schema</pdfaSchema:schema>
                  <pdfaSchema:property>
                     <rdf:Seq>
                        <rdf:li rdf:parseType="Resource">
                           <pdfaProperty:category>internal</pdfaProperty:category>
                           <pdfaProperty:description>UUID based identifier for specific incarnation of a document</pdfaProperty:description>
                           <pdfaProperty:name>InstanceID</pdfaProperty:name>
                           <pdfaProperty:valueType>URI</pdfaProperty:valueType>
                        </rdf:li>
                        <rdf:li rdf:parseType="Resource">
                           <pdfaProperty:category>internal</pdfaProperty:category>
                           <pdfaProperty:description>The common identifier for all versions and renditions of a document.</pdfaProperty:description>
                           <pdfaProperty:name>OriginalDocumentID</pdfaProperty:name>
                           <pdfaProperty:valueType>URI</pdfaProperty:valueType>
                        </rdf:li>
                     </rdf:Seq>
                  </pdfaSchema:property>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <pdfaSchema:namespaceURI>http://www.aiim.org/pdfua/ns/id/</pdfaSchema:namespaceURI>
                  <pdfaSchema:prefix>pdfuaid</pdfaSchema:prefix>
                  <pdfaSchema:schema>PDF/UA ID Schema</pdfaSchema:schema>
                  <pdfaSchema:property>
                     <rdf:Seq>
                        <rdf:li rdf:parseType="Resource">
                           <pdfaProperty:category>internal</pdfaProperty:category>
                           <pdfaProperty:description>Part of PDF/UA standard</pdfaProperty:description>
                           <pdfaProperty:name>part</pdfaProperty:name>
                           <pdfaProperty:valueType>Integer</pdfaProperty:valueType>
                        </rdf:li>
                     </rdf:Seq>
                  </pdfaSchema:property>
               </rdf:li>
            </rdf:Bag>
         </pdfaExtension:schemas>
      </rdf:Description>
   </rdf:RDF>
</x:xmpmeta>
                           
<?xpacket end="w"?>
<?xpacket end='r'?>
<bookmark-tree>
<bookmark title="This is a heading for the Document">
<destination structID="LinkTarget_22"/>
</bookmark>
</bookmark-tree>

<Document>
<H1 id="LinkTarget_22" xml:lang="EN-US">This is a heading for the Document </H1>

<P xml:lang="EN-US">This is a little bit of text </P>
<Figure Alt="VO Utility User INterface">

<ImageData src="images/TestforPDFCheck4_img_0.jpg"/>
</Figure>

<P xml:lang="EN-US">Here is an image without ALT text: </P>

<Artifact></Artifact>
</Document>
</TaggedPDF-doc>

person user15133619    schedule 03.02.2021    source источник
comment
Не забудьте экранировать встроенные теги XML в тексте (одиночные обратные кавычки), иначе Markdown их съест. Я исправил это для вас.   -  person Jim Garrison    schedule 03.02.2021


Ответы (1)


Согласно xml:lang в схемах документов XML можно было бы применить xml:lang="EN-US" на уровне <Document>. На странице явно указано, что атрибут имеет область действия и может быть переопределен в подэлементах.

Похоже, Adobe решила этого не делать. См. раздел 5.5 Руководство по использованию теговых PDF-файлов. 1 говорится об использовании атрибута lang=. Язык по умолчанию для документа находится в словаре каталога документа.

person Jim Garrison    schedule 03.02.2021
comment
Во-первых, спасибо, Джим, за вашу помощь и предложение о добавлении обратных кавычек. Из того, что вы говорите, кажется, что мой код должен быть довольно сложным, чтобы определить, каков общий язык документа - поскольку каждый генератор PDF-to-XML может реализовывать другое решение, я имею в виду поместить значение xml:lang где он выбирает. Это действительно так? Насколько вам известно, PDF/UA действительно не волнует, пока это где-то указано? - person user15133619; 05.02.2021