[latex3-commits] [latex3/pdfresources] develop: add support for declarations (78fe11a)

github at latex-project.org github at latex-project.org
Mon Nov 20 16:06:10 CET 2023


Repository : https://github.com/latex3/pdfresources
On branch  : develop
Link       : https://github.com/latex3/pdfresources/commit/78fe11aa2014a97557b7f5305a70c35f6117b746

>---------------------------------------------------------------

commit 78fe11aa2014a97557b7f5305a70c35f6117b746
Author: Ulrike Fischer <fischer at troubleshooting-tex.de>
Date:   Mon Nov 20 16:06:10 2023 +0100

    add support for declarations


>---------------------------------------------------------------

78fe11aa2014a97557b7f5305a70c35f6117b746
 l3pdfmeta.dtx                              | 118 +++++++++-
 testfiles-pdftex/metadata-declarations.lvt |  27 +++
 testfiles-pdftex/metadata-declarations.tlg | 345 +++++++++++++++++++++++++++++
 3 files changed, 488 insertions(+), 2 deletions(-)

diff --git a/l3pdfmeta.dtx b/l3pdfmeta.dtx
index b42ec8a..3c75208 100644
--- a/l3pdfmeta.dtx
+++ b/l3pdfmeta.dtx
@@ -557,6 +557,31 @@
 % With this command a xmlns name space can be added.
 % \end{function}
 %
+% With the two following commands PDF declarations can be added to the XMP metadata
+% (see \url{https://pdfa.org/wp-content/uploads/2019/09/PDF-Declarations.pdf}).
+% \begin{function}{\pdfmeta_xmp_add_declaration:n,\pdfmeta_xmp_add_declaration:e}
+% \begin{syntax}
+% \cs{pdfmeta_xmp_add_declaration:n}\Arg{uri}
+% \end{syntax}
+% This add a PDF declaration with the required |conformsTo| property to the XMP metadata. 
+% \meta{uri} should not be empty and is a URI specifying 
+% the standard or profile referred to by the PDF
+% Declaration. If the uri contains a hash, use \cs{c_hash_str} to excape it
+% and use the \texttt{e} variant to expand it.
+% \end{function}
+% 
+% \begin{function}{\pdfmeta_xmp_add_declaration:nnnnn,\pdfmeta_xmp_add_declaration:ennnn}
+% \begin{syntax}
+% \cs{pdfmeta_xmp_add_declaration:nnnnn}\Arg{uri}\Arg{By}\Arg{Date}\Arg{Credentials}\Arg{Report}
+% \end{syntax}
+% This add a PDF declaration to the XMP metadata similar 
+% to \cs{\pdfmeta_xmp_add_declaration:n}. 
+% With \meta{By}, \meta{Date}, \meta{Credentials}, \meta{Report} the optional 
+% fields |claimBy| (text), |claimDate| (iso date), |claimCredentials| (text) and 
+% |claimReport| (uri) of the |claimData| property can be given.
+% If  \cs{pdfmeta_xmp_add_declaration:nnnnn} is used twice with the same \meta{uri}
+% argument the |claimData| are concatenated. There is no check if the |claimData| are identical. 
+% \end{function}
 % \end{documentation}
 %
 % \begin{implementation}
@@ -1735,6 +1760,7 @@
         \@@_xmp_build_pdf:
         \@@_xmp_build_xmpRights:
         \@@_xmp_build_standards: %pdfaid,pdfxid,pdfuaid
+        \@@_xmp_build_pdfd:
         \@@_xmp_build_dc:
         \@@_xmp_build_photoshop:
         \@@_xmp_build_xmp:
@@ -2319,8 +2345,56 @@
 %    \end{macrocode}
 % \end{macro}
 %
-
-% \subsubsection{Photoshop}
+% \subsection{Declarations}
+% See \url{https://pdfa.org/wp-content/uploads/2019/09/PDF-Declarations.pdf}
+% 
+% \begin{variable}{\g_@@_xmp_pdfd_data_prop}
+% This holds the data for declarations.
+%    \begin{macrocode}
+\prop_new:N \g_@@_xmp_pdfd_data_prop
+%    \end{macrocode}
+% \end{variable}
+% the main building command used in the xmp generation
+% \begin{macro}{\@@_xmp_build_pdfd:}
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_xmp_build_pdfd:
+  {
+    \prop_if_empty:NF\g_@@_xmp_pdfd_data_prop
+      {
+        \@@_xmp_add_packet_open:nn{pdfd}{declarations}
+        \@@_xmp_add_packet_open:nn{rdf}{Bag}  
+          \prop_map_inline:Nn \g_@@_xmp_pdfd_data_prop
+            {
+              \@@_xmp_build_pdfd_claim:nn{##1}{##2}
+            }      
+        \@@_xmp_add_packet_close:nn{rdf}{Bag}
+        \@@_xmp_add_packet_close:nn{pdfd}{declarations}
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_xmp_build_pdfd_claim:nn}
+% This build the xml for one claim. If there is no
+% claimData only the conformsTo is output.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_xmp_build_pdfd_claim:nn #1#2
+ {
+    \@@_xmp_add_packet_open_attr:nnn{rdf}{li}{rdf:parseType="Resource"}
+      \@@_xmp_add_packet_line:nnn{pdfd}{conformsTo}{#1}      
+      \tl_if_empty:nF {#2}
+       {
+         \@@_xmp_add_packet_open:nn{pdfd}{claimData}  
+          \@@_xmp_add_packet_open:nn{rdf}{Bag}  
+            #2
+          \@@_xmp_add_packet_close:nn{rdf}{Bag}  
+         \@@_xmp_add_packet_close:nn{pdfd}{claimData}  
+       }
+    \@@_xmp_add_packet_close:nn{rdf}{li}   
+ }  
+%    \end{macrocode}
+% \end{macro}
+% 
+% \subsection{Photoshop}
 % \begin{macro}{\@@_xmp_build_photoshop:}
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_xmp_build_photoshop:
@@ -2711,6 +2785,46 @@
   }
 %    \end{macrocode}
 % \end{macro}
+% 
+% \begin{macro}{\pdfmeta_xmp_add_declaration:n,\pdfmeta_xmp_add_declaration:e}
+%    \begin{macrocode}
+\cs_new_protected:Npn \pdfmeta_xmp_add_declaration:n #1 %conformsTo uri
+ {
+   \@@_xmp_schema_enable_pdfd:
+   \prop_gput:Nnn\g_@@_xmp_pdfd_data_prop{#1}{}
+ }
+\cs_generate_variant:Nn \pdfmeta_xmp_add_declaration:n {e}
+%    \end{macrocode}
+
+% \begin{macro}{\pdfmeta_xmp_add_declaration:nnnnn,\pdfmeta_xmp_add_declaration:ennnn}
+%    \begin{macrocode}
+\cs_new_protected:Npn \pdfmeta_xmp_add_declaration:nnnnn #1#2#3#4#5
+ %#1=conformsTo uri, #2 claimBy, #3 claimDate #4 claimCredentials #4 claimReport
+ {
+   \@@_xmp_schema_enable_pdfd:
+   \tl_set:Nn \l_@@_tmpa_tl
+     {
+       \@@_xmp_add_packet_open_attr:nnn{rdf}{li}{rdf:parseType="Resource"}
+       \@@_xmp_add_packet_line:nnn{pdfd}{claimBy}{#2} 
+       \@@_xmp_add_packet_line:nnn{pdfd}{claimDate}{#3} 
+       \@@_xmp_add_packet_line:nnn{pdfd}{claimCredentials}{#4} 
+       \@@_xmp_add_packet_line:nnn{pdfd}{claimReport}{#5} 
+       \@@_xmp_add_packet_close:nn{rdf}{li}      
+     } 
+   \prop_get:NnNT \g_@@_xmp_pdfd_data_prop {#1}\l_@@_tmpb_tl
+    {
+      \tl_concat:NNN \l_@@_tmpa_tl \l_@@_tmpa_tl \l_@@_tmpb_tl
+    }
+   \prop_gput:Nno\g_@@_xmp_pdfd_data_prop{#1}
+       {
+         \l_@@_tmpa_tl
+       }        
+ }
+\cs_generate_variant:Nn\pdfmeta_xmp_add_declaration:nnnnn {e}
+%    \end{macrocode}
+
+%
+% \end{macro}
 %    \begin{macrocode}
 %</package>
 %    \end{macrocode}
diff --git a/testfiles-pdftex/metadata-declarations.lvt b/testfiles-pdftex/metadata-declarations.lvt
new file mode 100644
index 0000000..7bb26ff
--- /dev/null
+++ b/testfiles-pdftex/metadata-declarations.lvt
@@ -0,0 +1,27 @@
+\ExplSyntaxOn
+\debug_on:n { check-declarations , deprecation }
+\msg_redirect_module:nnn { pdf } { none } { warning }
+\ExplSyntaxOff
+\DocumentMetadata{}
+\input{regression-test}
+\DocumentMetadata{debug={xmp-export}}
+
+\documentclass{article}
+\ExplSyntaxOn
+\pdfmeta_xmp_add_declaration:e
+ {https://pdfa.org/declarations\c_hash_str iso32005}
+
+\pdfmeta_xmp_add_declaration:ennnn
+ {https://pdfa.org/declarations\c_hash_str wcag21A}{}{2023-11-20}{}{}
+
+\pdfmeta_xmp_add_declaration:nnnnn
+  {https://github.com/TikZlings/no-duck-harmed}{Ulrike~Fischer}{2023-11-20}{Bär}{https://github.com/u-fischer/bearwear}
+\pdfmeta_xmp_add_declaration:nnnnn
+  {https://github.com/TikZlings/no-duck-harmed}{Ulrike~Fischer}{2023-11-20}{Paulo}{https://github.com/cereda/sillypage}
+\ExplSyntaxOff
+\START
+\SHOWFILE{\jobname.xmpi}
+\OMIT
+\begin{document}
+text
+\end{document}
\ No newline at end of file
diff --git a/testfiles-pdftex/metadata-declarations.tlg b/testfiles-pdftex/metadata-declarations.tlg
new file mode 100644
index 0000000..d965f3d
--- /dev/null
+++ b/testfiles-pdftex/metadata-declarations.tlg
@@ -0,0 +1,345 @@
+This is a generated file for the l3build validation system.
+Don't change this file in any respect.
+-------- metadata-declarations.xmpi (start) ---------
+(metadata-declarations.xmpi)
+^^M
+<?xpacket begin="^^ef^^bb^^bf" id="W5M0MpCehiHzreSzNTczkc9d"?>^^M
+<x:xmpmeta xmlns:x="adobe:ns:meta/">^^M
+ <rdf:RDF xmlns:rdf="http://www.w3.org/....-..-..-rdf-syntax-ns#">^^M
+  <rdf:Description rdf:about=""^^M
+    xmlns:pdf="http://ns.adobe.com/pdf/1.3/"^^M
+    xmlns:xmpRights="http://ns.adobe.com/xap/1.0/rights/"^^M
+    xmlns:dc="http://purl.org/dc/elements/1.1/"^^M
+    xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"^^M
+    xmlns:xmp="http://ns.adobe.com/xap/1.0/"^^M
+    xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"^^M
+    xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"^^M
+    xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/"^^M
+    xmlns:pdfuaid="http://www.aiim.org/pdfua/ns/id/"^^M
+    xmlns:pdfx="http://ns.adobe.com/pdfx/1.3/"^^M
+    xmlns:pdfxid="http://www.npes.org/pdfx/ns/id/"^^M
+    xmlns:prism="http://prismstandard.org/namespaces/basic/3.0/"^^M
+    xmlns:stFnt="http://ns.adobe.com/xap/1.0/sType/Font#"^^M
+    xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/"^^M
+    xmlns:pdfaExtension="http://www.aiim.org/pdfa/ns/extension/"^^M
+    xmlns:pdfaSchema="http://www.aiim.org/pdfa/ns/schema#"^^M
+    xmlns:pdfaProperty="http://www.aiim.org/pdfa/ns/property#"^^M
+    xmlns:pdfaType="http://www.aiim.org/pdfa/ns/type#"^^M
+    xmlns:pdfaField="http://www.aiim.org/pdfa/ns/field#"^^M
+    xmlns:pdfd="http://pdfa.org/declarations/">^^M
+   <pdfaExtension:schemas>^^M
+    <rdf:Bag>^^M
+     <rdf:li rdf:parseType="Resource">^^M
+      <pdfaSchema:schema>XMP Media Management Schema</pdfaSchema:schema>^^M
+      <pdfaSchema:prefix>xmpMM</pdfaSchema:prefix>^^M
+      <pdfaSchema:namespaceURI>http://ns.adobe.com/xap/1.0/mm/</pdfaSchema:namespaceURI>^^M
+      <pdfaSchema:property>^^M
+       <rdf:Seq>^^M
+        <rdf:li rdf:parseType="Resource">^^M
+         <pdfaProperty:name>OriginalDocumentID</pdfaProperty:name>^^M
+         <pdfaProperty:valueType>URI</pdfaProperty:valueType>^^M
+         <pdfaProperty:category>internal</pdfaProperty:category>^^M
+         <pdfaProperty:description>The common identifier for all versions and renditions of a document.</pdfaProperty:description>^^M
+        </rdf:li>^^M
+       </rdf:Seq>^^M
+      </pdfaSchema:property>^^M
+     </rdf:li>^^M
+     <rdf:li rdf:parseType="Resource">^^M
+      <pdfaSchema:schema>PDF/A Identification Schema</pdfaSchema:schema>^^M
+      <pdfaSchema:prefix>pdfaid</pdfaSchema:prefix>^^M
+      <pdfaSchema:namespaceURI>http://www.aiim.org/pdfa/ns/id/</pdfaSchema:namespaceURI>^^M
+      <pdfaSchema:property>^^M
+       <rdf:Seq>^^M
+        <rdf:li rdf:parseType="Resource">^^M
+         <pdfaProperty:name>year</pdfaProperty:name>^^M
+         <pdfaProperty:valueType>Integer</pdfaProperty:valueType>^^M
+         <pdfaProperty:category>internal</pdfaProperty:category>^^M
+         <pdfaProperty:description>Year of standard</pdfaProperty:description>^^M
+        </rdf:li>^^M
+       </rdf:Seq>^^M
+      </pdfaSchema:property>^^M
+     </rdf:li>^^M
+     <rdf:li rdf:parseType="Resource">^^M
+      <pdfaSchema:schema>PDF/UA Universal Accessibility Schema</pdfaSchema:schema>^^M
+      <pdfaSchema:prefix>pdfuaid</pdfaSchema:prefix>^^M
+      <pdfaSchema:namespaceURI>http://www.aiim.org/pdfua/ns/id/</pdfaSchema:namespaceURI>^^M
+      <pdfaSchema:property>^^M
+       <rdf:Seq>^^M
+        <rdf:li rdf:parseType="Resource">^^M
+         <pdfaProperty:name>part</pdfaProperty:name>^^M
+         <pdfaProperty:valueType>Integer</pdfaProperty:valueType>^^M
+         <pdfaProperty:category>internal</pdfaProperty:category>^^M
+         <pdfaProperty:description>Part of ISO 14289 standard</pdfaProperty:description>^^M
+        </rdf:li>^^M
+        <rdf:li rdf:parseType="Resource">^^M
+         <pdfaProperty:name>rev</pdfaProperty:name>^^M
+         <pdfaProperty:valueType>Integer</pdfaProperty:valueType>^^M
+         <pdfaProperty:category>internal</pdfaProperty:category>^^M
+         <pdfaProperty:description>Revision of ISO 14289 standard</pdfaProperty:description>^^M
+        </rdf:li>^^M
+       </rdf:Seq>^^M
+      </pdfaSchema:property>^^M
+     </rdf:li>^^M
+     <rdf:li rdf:parseType="Resource">^^M
+      <pdfaSchema:schema>PDF/X ID Schema</pdfaSchema:schema>^^M
+      <pdfaSchema:prefix>pdfxid</pdfaSchema:prefix>^^M
+      <pdfaSchema:namespaceURI>http://www.npes.org/pdfx/ns/id/</pdfaSchema:namespaceURI>^^M
+      <pdfaSchema:property>^^M
+       <rdf:Seq>^^M
+        <rdf:li rdf:parseType="Resource">^^M
+         <pdfaProperty:name>GTS_PDFXVersion</pdfaProperty:name>^^M
+         <pdfaProperty:valueType>Text</pdfaProperty:valueType>^^M
+         <pdfaProperty:category>internal</pdfaProperty:category>^^M
+         <pdfaProperty:description>ID of PDF/X standard</pdfaProperty:description>^^M
+        </rdf:li>^^M
+       </rdf:Seq>^^M
+      </pdfaSchema:property>^^M
+     </rdf:li>^^M
+     <rdf:li rdf:parseType="Resource">^^M
+      <pdfaSchema:schema>PRISM Basic Metadata</pdfaSchema:schema>^^M
+      <pdfaSchema:prefix>prism</pdfaSchema:prefix>^^M
+      <pdfaSchema:namespaceURI>http://prismstandard.org/namespaces/basic/3.0/</pdfaSchema:namespaceURI>^^M
+      <pdfaSchema:property>^^M
+       <rdf:Seq>^^M
+        <rdf:li rdf:parseType="Resource">^^M
+         <pdfaProperty:name>complianceProfile</pdfaProperty:name>^^M
+         <pdfaProperty:valueType>Text</pdfaProperty:valueType>^^M
+         <pdfaProperty:category>internal</pdfaProperty:category>^^M
+         <pdfaProperty:description>PRISM specification compliance profile to which this document adheres</pdfaProperty:description>^^M
+        </rdf:li>^^M
+        <rdf:li rdf:parseType="Resource">^^M
+         <pdfaProperty:name>publicationName</pdfaProperty:name>^^M
+         <pdfaProperty:valueType>Text</pdfaProperty:valueType>^^M
+         <pdfaProperty:category>external</pdfaProperty:category>^^M
+         <pdfaProperty:description>Publication name</pdfaProperty:description>^^M
+        </rdf:li>^^M
+        <rdf:li rdf:parseType="Resource">^^M
+         <pdfaProperty:name>aggregationType</pdfaProperty:name>^^M
+         <pdfaProperty:valueType>Text</pdfaProperty:valueType>^^M
+         <pdfaProperty:category>external</pdfaProperty:category>^^M
+         <pdfaProperty:description>Publication type</pdfaProperty:description>^^M
+        </rdf:li>^^M
+        <rdf:li rdf:parseType="Resource">^^M
+         <pdfaProperty:name>bookEdition</pdfaProperty:name>^^M
+         <pdfaProperty:valueType>Text</pdfaProperty:valueType>^^M
+         <pdfaProperty:category>external</pdfaProperty:category>^^M
+         <pdfaProperty:description>Edition of the book in which the document was published</pdfaProperty:description>^^M
+        </rdf:li>^^M
+        <rdf:li rdf:parseType="Resource">^^M
+         <pdfaProperty:name>volume</pdfaProperty:name>^^M
+         <pdfaProperty:valueType>Text</pdfaProperty:valueType>^^M
+         <pdfaProperty:category>external</pdfaProperty:category>^^M
+         <pdfaProperty:description>Publication volume number</pdfaProperty:description>^^M
+        </rdf:li>^^M
+        <rdf:li rdf:parseType="Resource">^^M
+         <pdfaProperty:name>number</pdfaProperty:name>^^M
+         <pdfaProperty:valueType>Text</pdfaProperty:valueType>^^M
+         <pdfaProperty:category>external</pdfaProperty:category>^^M
+         <pdfaProperty:description>Publication issue number within a volume</pdfaProperty:description>^^M
+        </rdf:li>^^M
+        <rdf:li rdf:parseType="Resource">^^M
+         <pdfaProperty:name>pageRange</pdfaProperty:name>^^M
+         <pdfaProperty:valueType>Text</pdfaProperty:valueType>^^M
+         <pdfaProperty:category>external</pdfaProperty:category>^^M
+         <pdfaProperty:description>Page range for the document within the print version of its publication</pdfaProperty:description>^^M
+        </rdf:li>^^M
+        <rdf:li rdf:parseType="Resource">^^M
+         <pdfaProperty:name>issn</pdfaProperty:name>^^M
+         <pdfaProperty:valueType>Text</pdfaProperty:valueType>^^M
+         <pdfaProperty:category>external</pdfaProperty:category>^^M
+         <pdfaProperty:description>ISSN for the printed publication in which the document was published</pdfaProperty:description>^^M
+        </rdf:li>^^M
+        <rdf:li rdf:parseType="Resource">^^M
+         <pdfaProperty:name>eIssn</pdfaProperty:name>^^M
+         <pdfaProperty:valueType>Text</pdfaProperty:valueType>^^M
+         <pdfaProperty:category>external</pdfaProperty:category>^^M
+         <pdfaProperty:description>ISSN for the electronic publication in which the document was published</pdfaProperty:description>^^M
+        </rdf:li>^^M
+        <rdf:li rdf:parseType="Resource">^^M
+         <pdfaProperty:name>isbn</pdfaProperty:name>^^M
+         <pdfaProperty:valueType>Text</pdfaProperty:valueType>^^M
+         <pdfaProperty:category>external</pdfaProperty:category>^^M
+         <pdfaProperty:description>ISBN for the publication in which the document was published</pdfaProperty:description>^^M
+        </rdf:li>^^M
+        <rdf:li rdf:parseType="Resource">^^M
+         <pdfaProperty:name>doi</pdfaProperty:name>^^M
+         <pdfaProperty:valueType>Text</pdfaProperty:valueType>^^M
+         <pdfaProperty:category>external</pdfaProperty:category>^^M
+         <pdfaProperty:description>Digital Object Identifier for the document</pdfaProperty:description>^^M
+        </rdf:li>^^M
+        <rdf:li rdf:parseType="Resource">^^M
+         <pdfaProperty:name>url</pdfaProperty:name>^^M
+         <pdfaProperty:valueType>URL</pdfaProperty:valueType>^^M
+         <pdfaProperty:category>external</pdfaProperty:category>^^M
+         <pdfaProperty:description>URL at which the document can be found</pdfaProperty:description>^^M
+        </rdf:li>^^M
+        <rdf:li rdf:parseType="Resource">^^M
+         <pdfaProperty:name>byteCount</pdfaProperty:name>^^M
+         <pdfaProperty:valueType>Integer</pdfaProperty:valueType>^^M
+         <pdfaProperty:category>internal</pdfaProperty:category>^^M
+         <pdfaProperty:description>Approximate file size in octets</pdfaProperty:description>^^M
+        </rdf:li>^^M
+        <rdf:li rdf:parseType="Resource">^^M
+         <pdfaProperty:name>pageCount</pdfaProperty:name>^^M
+         <pdfaProperty:valueType>Integer</pdfaProperty:valueType>^^M
+         <pdfaProperty:category>internal</pdfaProperty:category>^^M
+         <pdfaProperty:description>Number of pages in the print version of the document</pdfaProperty:description>^^M
+        </rdf:li>^^M
+        <rdf:li rdf:parseType="Resource">^^M
+         <pdfaProperty:name>subtitle</pdfaProperty:name>^^M
+         <pdfaProperty:valueType>Text</pdfaProperty:valueType>^^M
+         <pdfaProperty:category>external</pdfaProperty:category>^^M
+         <pdfaProperty:description>Document's subtitle</pdfaProperty:description>^^M
+        </rdf:li>^^M
+       </rdf:Seq>^^M
+      </pdfaSchema:property>^^M
+     </rdf:li>^^M
+     <rdf:li rdf:parseType="Resource">^^M
+      <pdfaSchema:schema>PDF Declarations Schema</pdfaSchema:schema>^^M
+      <pdfaSchema:prefix>pdfd</pdfaSchema:prefix>^^M
+      <pdfaSchema:namespaceURI>http://pdfa.org/declarations/</pdfaSchema:namespaceURI>^^M
+      <pdfaSchema:property>^^M
+       <rdf:Seq>^^M
+        <rdf:li rdf:parseType="Resource">^^M
+         <pdfaProperty:name>declarations</pdfaProperty:name>^^M
+         <pdfaProperty:valueType>Bag declaration</pdfaProperty:valueType>^^M
+         <pdfaProperty:category>external</pdfaProperty:category>^^M
+         <pdfaProperty:description>An unordered array of PDF Declaration entries, where each PDF Declaration representing a statement of conformance with an identified external standard or profile, along with optional information identifying the nature of the claim.</pdfaProperty:description>^^M
+        </rdf:li>^^M
+       </rdf:Seq>^^M
+      </pdfaSchema:property>^^M
+      <pdfaSchema:valueType>^^M
+       <rdf:Seq>^^M
+        <rdf:li rdf:parseType="Resource">^^M
+         <pdfaType:type>claim</pdfaType:type>^^M
+         <pdfaType:namespaceURI>http://pdfa.org/declarations/</pdfaType:namespaceURI>^^M
+         <pdfaType:prefix>pdfd</pdfaType:prefix>^^M
+         <pdfaType:description>A structure describing properties of an individualclaim.</pdfaType:description>^^M
+         <pdfaType:field>^^M
+          <rdf:Seq>^^M
+           <rdf:li rdf:parseType="Resource">^^M
+            <pdfaField:name>claimReport</pdfaField:name>^^M
+            <pdfaField:valueType>Text</pdfaField:valueType>^^M
+            <pdfaField:description>A URL to a report containing details of the specific conformance claim.</pdfaField:description>^^M
+           </rdf:li>^^M
+           <rdf:li rdf:parseType="Resource">^^M
+            <pdfaField:name>claimCredentials</pdfaField:name>^^M
+            <pdfaField:valueType>Text</pdfaField:valueType>^^M
+            <pdfaField:description>The claimant's credentials.</pdfaField:description>^^M
+           </rdf:li>^^M
+           <rdf:li rdf:parseType="Resource">^^M
+            <pdfaField:name>claimDate</pdfaField:name>^^M
+            <pdfaField:valueType>Text</pdfaField:valueType>^^M
+            <pdfaField:description>A date identifying when the claim was made.</pdfaField:description>^^M
+           </rdf:li>^^M
+           <rdf:li rdf:parseType="Resource">^^M
+            <pdfaField:name>claimBy</pdfaField:name>^^M
+            <pdfaField:valueType>Text</pdfaField:valueType>^^M
+            <pdfaField:description>The name of the organization and/or individual and/or software making the claim.</pdfaField:description>^^M
+           </rdf:li>^^M
+          </rdf:Seq>^^M
+         </pdfaType:field>^^M
+        </rdf:li>^^M
+        <rdf:li rdf:parseType="Resource">^^M
+         <pdfaType:type>declaration</pdfaType:type>^^M
+         <pdfaType:namespaceURI>http://pdfa.org/declarations/</pdfaType:namespaceURI>^^M
+         <pdfaType:prefix>pdfd</pdfaType:prefix>^^M
+         <pdfaType:description>A structure describing a single PDF Declaration asserting conformance with an externally-identified standard or profile.</pdfaType:description>^^M
+         <pdfaType:field>^^M
+          <rdf:Seq>^^M
+           <rdf:li rdf:parseType="Resource">^^M
+            <pdfaField:name>conformsTo</pdfaField:name>^^M
+            <pdfaField:valueType>Text</pdfaField:valueType>^^M
+            <pdfaField:description>A property containing a URI specifying the standard or profile by the PDF Declaration. This property is intended to mirror the Dublin Core property dc:conformsTo.</pdfaField:description>^^M
+           </rdf:li>^^M
+           <rdf:li rdf:parseType="Resource">^^M
+            <pdfaField:name>claimData</pdfaField:name>^^M
+            <pdfaField:valueType>Bag claim</pdfaField:valueType>^^M
+            <pdfaField:description>An unordered array of claim data, where each claim identifies the nature of the claim.</pdfaField:description>^^M
+           </rdf:li>^^M
+          </rdf:Seq>^^M
+         </pdfaType:field>^^M
+        </rdf:li>^^M
+       </rdf:Seq>^^M
+      </pdfaSchema:valueType>^^M
+     </rdf:li>^^M
+    </rdf:Bag>^^M
+   </pdfaExtension:schemas>^^M
+   <pdf:Producer>pdftex-NN.NN.NN</pdf:Producer>^^M
+   <pdf:PDFVersion>1.5</pdf:PDFVersion>^^M
+   <pdfd:declarations>^^M
+    <rdf:Bag>^^M
+     <rdf:li rdf:parseType="Resource">^^M
+      <pdfd:conformsTo>https://pdfa.org/declarations#iso32005</pdfd:conformsTo>^^M
+     </rdf:li>^^M
+     <rdf:li rdf:parseType="Resource">^^M
+      <pdfd:conformsTo>https://pdfa.org/declarations#wcag21A</pdfd:conformsTo>^^M
+      <pdfd:claimData>^^M
+       <rdf:Bag>^^M
+        <rdf:li rdf:parseType="Resource">^^M
+         <pdfd:claimDate>....-..-..</pdfd:claimDate>^^M
+        </rdf:li>^^M
+       </rdf:Bag>^^M
+      </pdfd:claimData>^^M
+     </rdf:li>^^M
+     <rdf:li rdf:parseType="Resource">^^M
+      <pdfd:conformsTo>https://github.com/TikZlings/no-duck-harmed</pdfd:conformsTo>^^M
+      <pdfd:claimData>^^M
+       <rdf:Bag>^^M
+        <rdf:li rdf:parseType="Resource">^^M
+         <pdfd:claimBy>Ulrike Fischer</pdfd:claimBy>^^M
+         <pdfd:claimDate>....-..-..</pdfd:claimDate>^^M
+         <pdfd:claimCredentials>Paulo</pdfd:claimCredentials>^^M
+         <pdfd:claimReport>https://github.com/cereda/sillypage</pdfd:claimReport>^^M
+        </rdf:li>^^M
+        <rdf:li rdf:parseType="Resource">^^M
+         <pdfd:claimBy>Ulrike Fischer</pdfd:claimBy>^^M
+         <pdfd:claimDate>....-..-..</pdfd:claimDate>^^M
+         <pdfd:claimCredentials>B^^c3^^a4r</pdfd:claimCredentials>^^M
+         <pdfd:claimReport>https://github.com/u-fischer/bearwear</pdfd:claimReport>^^M
+        </rdf:li>^^M
+       </rdf:Bag>^^M
+      </pdfd:claimData>^^M
+     </rdf:li>^^M
+    </rdf:Bag>^^M
+   </pdfd:declarations>^^M
+   <dc:type>^^M
+    <rdf:Bag>^^M
+     <rdf:li>Text</rdf:li>^^M
+    </rdf:Bag>^^M
+   </dc:type>^^M
+   <dc:language>^^M
+    <rdf:Bag>^^M
+     <rdf:li>en-US</rdf:li>^^M
+    </rdf:Bag>^^M
+   </dc:language>^^M
+   <dc:date>^^M
+    <rdf:Seq>^^M
+     <rdf:li>....-..-..T09:00:00Z</rdf:li>^^M
+    </rdf:Seq>^^M
+   </dc:date>^^M
+   <dc:format>application/pdf</dc:format>^^M
+   <dc:source>metadata-declarations.tex</dc:source>^^M
+   <xmp:CreatorTool>LaTeX</xmp:CreatorTool>^^M
+   <xmp:CreateDate>....-..-..T09:00:00Z</xmp:CreateDate>^^M
+   <xmp:ModifyDate>....-..-..T09:00:00Z</xmp:ModifyDate>^^M
+   <xmp:MetadataDate>....-..-..T09:00:00Z</xmp:MetadataDate>^^M
+   <xmpMM:DocumentID>uuid:63828731-84a6-4bef-8c1b-282986d0a0e2</xmpMM:DocumentID>^^M
+   <xmpMM:InstanceID>uuid:0a57c455-157a-4141-8c19-6237d832fc80</xmpMM:InstanceID>^^M
+   <prism:complianceProfile>three</prism:complianceProfile>^^M
+   <prism:pageCount>1</prism:pageCount>^^M
+  </rdf:Description>^^M
+ </rdf:RDF>^^M
+</x:xmpmeta>^^M
+^^M
+^^M
+^^M
+^^M
+^^M
+^^M
+^^M
+^^M
+^^M
+^^M
+<?xpacket end="w"?>^^M
+-------- metadata-declarations.xmpi (end) -----------





More information about the latex3-commits mailing list.