diff --git a/README b/README index 67dcf9dc..c10ac31e 100644 --- a/README +++ b/README @@ -12,6 +12,8 @@ After installing or building the documentation, you can point your browser to doc/index.html for the complete Exiv2 API documentation and metadata tag reference. +For more information on XMP support in Exiv2, see doc/README-XMP. + Building and Installing ======================= diff --git a/README-XMP b/doc/README-XMP similarity index 94% rename from README-XMP rename to doc/README-XMP index 97d230b6..a4bbec51 100644 --- a/README-XMP +++ b/doc/README-XMP @@ -1,12 +1,12 @@ -XMP support -*********** +Exiv2 XMP support +***************** XMP support is controlled with the --enable-xmp and --disable-xmp options to the configure script. Building Exiv2 with XMP support requires the Expat XML parser library (http://expat.sourceforge.net/). The --with-expat configure option can be used if it is installed in a -non-standard directory. See the main README file for more information -on building exiv2. +non-standard directory. See the main README file for general build +information. For API documentation of XMP classes and samples, build or install the documentation and go to doc/html/getting-started.html diff --git a/doc/cmdxmp.txt b/doc/cmdxmp.txt new file mode 100644 index 00000000..75bfa982 --- /dev/null +++ b/doc/cmdxmp.txt @@ -0,0 +1,82 @@ +# Sample Exiv2 command file for XMP tags +# -------------------------------------- + +# Set basic properties. Exiv2 uses the value type of the XMP specification +# for the property, if it is not specified. The default XMP value type +# for unknown properties is a simple text value. + +# A simple text property. +set Xmp.dc.source xmpsample.cpp + +# An array item (unordered array). +set Xmp.dc.subject "Palmtree" + +# Add a 2nd array item +set Xmp.dc.subject "Rubbertree" + +# A language alternative (without a default) +set Xmp.dc.title lang=en-US Sunset on the beach +set Xmp.dc.title lang=de-DE Sonnenuntergang am Strand + +# Any properties can be set provided the namespace is known. +set Xmp.dc.one -1 +set Xmp.dc.two 3.1415 +set Xmp.dc.three 5/7 +set Xmp.dc.four 255 +set Xmp.dc.five 256 +set Xmp.dc.six false +set Xmp.dc.seven Seven + +# The value type can be specified. Exiv2 has support for a limited number +# of specific XMP types with built-in types: The basic XmpText, array +# types XmpAlt (alternative array), XmpBag (unordered array), XmpSeq +# (ordered array) and language alternatives LangAlt. + +# Simple text property with explicitly specified value type +set Xmp.dc.format XmpText "image/jpeg" + +# An ordered array +set Xmp.dc.creator XmpSeq "1) The first creator" +set Xmp.dc.creator "2) The second creator" +set Xmp.dc.creator "3) And another one" + +# A language alternative. The default entry of a langauge alternative +# doesn't need a language qualifier. +set Xmp.dc.description LangAlt lang=de-DE Hallo, Welt +set Xmp.dc.description LangAlt Hello, World + +# According to the XMP specification, Xmp.tiff.ImageDescription is an +# alias for Xmp.dc.description. Exiv2 treats an alias just like any +# other property. +set Xmp.tiff.ImageDescription TIFF image description +set Xmp.tiff.ImageDescription lang=de-DE TIFF Bildbeschreibung + +# Register a namespace which Exiv2 doesn't know yet with a prefix. +reg ns myNamespace/ + +# There are no built-in Exiv2 value types for structures, qualifiers and +# nested types. However, these can be added by using an XmpText value and a +# path as the key. + +# Add a structure +set Xmp.xmpDM.videoFrameSize/stDim:w 16 +set Xmp.xmpDM.videoFrameSize/stDim:h 9 +set Xmp.xmpDM.videoFrameSize/stDim:unit inch + +# Add an element with a qualifier (using the namespace registered earlier) +set Xmp.dc.publisher James Bond +set Xmp.dc.publisher/?ns:role secret agent + +# Add a qualifer to an array element of Xmp.dc.creator (added above) +set Xmp.dc.creator[2]/?ns:role programmer + +# Add an array of structures. First set a text property with just the +# array type. (Note: this is not the same as creating an XmpBag property.) +set Xmp.xmpBJ.JobRef XmpText type=Bag + +# Then set the array items. Each of them is a structure with two elements. +set Xmp.xmpBJ.JobRef[1]/stJob:name XmpText Birthday party +set Xmp.xmpBJ.JobRef[1]/stJob:role XmpText Photographer + +set Xmp.xmpBJ.JobRef[2]/stJob:name Wedding ceremony +set Xmp.xmpBJ.JobRef[2]/stJob:role Best man diff --git a/src/exiv2.1 b/src/exiv2.1 index 95852a0c..bbdd226a 100644 --- a/src/exiv2.1 +++ b/src/exiv2.1 @@ -303,6 +303,12 @@ that for IPTC \fBTime\fP values is HH:MM:SS+|\-HH:MM, where HH:MM:SS refers to local hour, minute and seconds and +|\-HH:MM refers to hours and minutes ahead or behind Universal Coordinated Time (+|\- means either a + or a \- sign is required). +.TP +An additional command is available to register XMP namespaces: +.TP +.nf +\fBreg\fP \fIprefix\fP \fInamespace\fP +.fi .SS Command file format Empty lines and lines starting with \fB#\fP in a command file are ignored (comments). Remaining lines are commands as described above.