lib/hexapdf/document/metadata.rb in hexapdf-0.41.0 vs lib/hexapdf/document/metadata.rb in hexapdf-0.44.0

- old
+ new

@@ -159,10 +159,11 @@ @document = document @namespaces = PREDEFINED_NAMESPACES.dup @properties = PREDEFINED_PROPERTIES.transform_values(&:dup) @default_language = document.catalog[:Lang] || 'x-default' @metadata = Hash.new {|h, k| h[k] = {} } + @custom_metadata = [] write_info_dict(true) write_metadata_stream(true) @document.register_listener(:complete_objects, &method(:write_metadata)) parse_metadata end @@ -246,10 +247,20 @@ else ns[property] = value end end + # Adds the given +data+ string as custom metadata to the XMP document. + # + # The +data+ string must contain a fully valid 'rdf:Description' element. + # + # Using this method allows adding metadata like PDF/A schema definitions for which there is no + # direct support by HexaPDF. + def custom_metadata(data) + @custom_metadata << data + end + # :call-seq: # metadata.delete # metadata.delete(ns_prefix) # metadata.delete(ns_prefix, name) # @@ -467,10 +478,10 @@ def xmp_packet(data) <<~XMP <?xpacket begin="\u{FEFF}" id="#{SecureRandom.uuid.tr('-', '')}"?> <x:xmpmeta xmlns:x="adobe:ns:meta/"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> - #{data} + #{data}#{@custom_metadata.empty? ? '' : "\n#{@custom_metadata.join("\n")}"} </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?> XMP end