<p>Use JSON (JavaScript Object Notation) formatting for console output, or import JSON file if <i>JSONFILE</i> is specified. This option may be combined with <b>-g</b> to organize the output into objects by group, or <b>-G</b> to add group names to each tag. List-type tags with multiple items are output as JSON arrays unless <b>-sep</b> is used. By default XMP structures are flattened into individual tags in the JSON output, but the original structure may be preserved with the <b>-struct</b> option (this also causes all list-type XMP tags to be output as JSON arrays, otherwise single-item lists are output as simple strings). The <b>-a</b> option is implied if the <b>-g</b> or <b>-G</b> options are used, otherwise it is ignored and duplicate tags are suppressed. Adding the <b>-D</b> or <b>-H</b> option changes tag values to JSON objects with "val" and "id" fields, and adding <b>-l</b> adds a "desc" field, and a "num" field if the numerical value is different from the converted "val". The <b>-b</b> option may be added to output binary data, encoded in base64 if necessary (indicated by "base64:" as the first 7 bytes of the value). The JSON output is UTF-8 regardless of any <b>-L</b> or <b>-charset</b> option setting, but the UTF-8 validation is disabled if a character set other than UTF-8 is specified.</p>
<p>Use JSON (JavaScript Object Notation) formatting for console output, or import JSON file if <i>JSONFILE</i> is specified. This option may be combined with <b>-g</b> to organize the output into objects by group, or <b>-G</b> to add group names to each tag. List-type tags with multiple items are output as JSON arrays unless <b>-sep</b> is used. By default XMP structures are flattened into individual tags in the JSON output, but the original structure may be preserved with the <b>-struct</b> option (this also causes all list-type XMP tags to be output as JSON arrays, otherwise single-item lists are output as simple strings). The <b>-a</b> option is implied if the <b>-g</b> or <b>-G</b> options are used, otherwise it is ignored and duplicate tags are suppressed. Adding the <b>-D</b> or <b>-H</b> option changes tag values to JSON objects with "val" and "id" fields, and adding <b>-l</b> adds a "desc" field, and a "num" field if the numerical value is different from the converted "val". The <b>-b</b> option may be added to output binary data, encoded in base64 if necessary (indicated by "base64:" as the first 7 bytes of the value), and <b>-t</b> may be added to include tag table information (see <b>-t</b> for details). The JSON output is UTF-8 regardless of any <b>-L</b> or <b>-charset</b> option setting, but the UTF-8 validation is disabled if a character set other than UTF-8 is specified.</p>
<p>If <i>JSONFILE</i> is specified, the file is imported and the tag definitions from the file are used to set tag values on a per-file basis. The special "SourceFile" entry in each JSON object associates the information with a specific target file. An object with a missing SourceFile or a SourceFile of "*" defines default tags for all target files. The imported JSON file must have the same format as the exported JSON files with the exception that the <b>-g</b> option is not compatible with the import file format (use <b>-G</b> instead). Additionally, tag names in the input JSON file may be suffixed with a <code>#</code> to disable print conversion.</p>
@ -612,7 +612,7 @@
<dtid="p-FMTFILE-or-STR--printFormat"><b>-p</b><i>FMTFILE</i> or <i>STR</i> (<b>-printFormat</b>)</dt>
<dd>
<p>Print output in the format specified by the given file or string (and ignore other format options). Tag names in the format file or string begin with a <code>$</code> symbol and may contain a leading group names and/or a trailing <code>#</code>. Case is not significant. Braces <code>{}</code> may be used around the tag name to separate it from subsequent text. Use <code>$$</code> to represent a <code>$</code> symbol, and <code>$/</code> for a newline. Multiple <b>-p</b> options may be used, each contributing a line of text to the output. Lines beginning with <code>#[HEAD]</code> and <code>#[TAIL]</code> are output only for the first and last processed files respectively. Lines beginning with <code>#[BODY]</code> and lines not beginning with <code>#</code> are output for each processed file. Other lines beginning with <code>#</code> are ignored. For example, this format file:</p>
<p>Print output in the format specified by the given file or string (and ignore other format options). Tag names in the format file or string begin with a <code>$</code> symbol and may contain a leading group names and/or a trailing <code>#</code>. Case is not significant. Braces <code>{}</code> may be used around the tag name to separate it from subsequent text. Use <code>$$</code> to represent a <code>$</code> symbol, and <code>$/</code> for a newline. Multiple <b>-p</b> options may be used, each contributing a line of text to the output. Lines beginning with <code>#[HEAD]</code> and <code>#[TAIL]</code> are output before the first processed file and after the last processed file respectively. Lines beginning with <code>#[BODY]</code> and lines not beginning with <code>#</code> are output for each processed file. Lines beginning with <code>#[SECT]</code> and <code>#[ENDS]</code> are output around each section of files. A section is defined as a group of files with the same section header (eg. files are grouped by directory if <code>#[SECT]</code> contains <code>$directory</code>). Other lines beginning with <code>#</code> are ignored. For example, this format file:</p>
<pre><code> # this is a comment line
#[HEAD]-- Generated by ExifTool $exifToolVersion --
@ -626,7 +626,7 @@
<p>produces output like this:</p>
<pre><code> -- Generated by ExifTool 10.40 --
<pre><code> -- Generated by ExifTool 10.41 --
File: a.jpg - 2003:10:31 15:44:19
(f/5.6, 1/60s, ISO 100)
File: b.jpg - 2006:05:23 11:57:38
@ -647,7 +647,7 @@
<dtid="php"><b>-php</b></dt>
<dd>
<p>Format output as a PHP Array. The <b>-g</b>, <b>-G</b>, <b>-D</b>, <b>-H</b>, <b>-l</b>, <b>-sep</b> and <b>-struct</b> options combine with <b>-php</b>, and duplicate tags are handled in the same way as with the <b>-json</b> option. As well, the <b>-b</b> option may be added to output binary data. Here is a simple example showing how this could be used in a PHP script:</p>
<p>Format output as a PHP Array. The <b>-g</b>, <b>-G</b>, <b>-D</b>, <b>-H</b>, <b>-l</b>, <b>-sep</b> and <b>-struct</b> options combine with <b>-php</b>, and duplicate tags are handled in the same way as with the <b>-json</b> option. As well, the <b>-b</b> option may be added to output binary data, and <b>-t</b> may be added to include tag table information (see <b>-t</b> for details). Here is a simple example showing how this could be used in a PHP script:</p>
<p>Output a tab-delimited list of description/values (useful for database import). May be combined with <b>-s</b> to print tag names instead of descriptions, or <b>-S</b> to print tag values only, tab-delimited on a single line. The <b>-t</b> option may also be used to add tag table information to the <b>-X</b> option output.</p>
<p>Output a tab-delimited list of description/values (useful for database import). May be combined with <b>-s</b> to print tag names instead of descriptions, or <b>-S</b> to print tag values only, tab-delimited on a single line. The <b>-t</b> option may be combined with <b>-j</b>, <b>-php</b> or <b>-X</b> to add tag table information (table <code>name</code>, decimal tag <code>id</code>, and <code>index</code> for cases where multiple conditional tags exist with the same ID).</p>
</dd>
<dtid="T--table"><b>-T</b> (<b>-table</b>)</dt>
@ -814,7 +814,7 @@
<p>Use ExifTool-specific RDF/XML formatting for console output. Implies the <b>-a</b> option, so duplicate tags are extracted. The formatting options <b>-b</b>, <b>-D</b>, <b>-H</b>, <b>-l</b>, <b>-s</b>, <b>-sep</b>, <b>-struct</b> and <b>-t</b> may be used in combination with <b>-X</b> to affect the output, but note that the tag ID (<b>-D</b>, <b>-H</b> and <b>-t</b>), binary data (<b>-b</b>) and structured output (<b>-struct</b>) options are not effective for the short output (<b>-s</b>). Another restriction of <b>-s</b> is that only one tag with a given group and name may appear in the output. Note that the tag ID options (<b>-D</b>, <b>-H</b> and <b>-t</b>) will produce non-standard RDF/XML unless the <b>-l</b> option is also used.</p>
<p>By default, <b>-X</b> outputs flattened tags, so <b>-struct</b> should be added if required to preserve XMP structures. List-type tags with multiple values are formatted as an RDF Bag, but they are combined into a single string when <b>-s</b> or <b>-sep</b> is used. Using <b>-L</b> changes the XML encoding from "UTF-8" to "windows-1252". Other <b>-charset</b> settings change the encoding only if there is a corresponding standard XML character set. The <b>-b</b> option causes binary data values to be written, encoded in base64 if necessary. The <b>-t</b> option adds tag table information to the output (table <code>name</code>, decimal tag <code>id</code>, and <code>index</code> for cases where multiple conditional tags exist with the same ID).</p>
<p>By default, <b>-X</b> outputs flattened tags, so <b>-struct</b> should be added if required to preserve XMP structures. List-type tags with multiple values are formatted as an RDF Bag, but they are combined into a single string when <b>-s</b> or <b>-sep</b> is used. Using <b>-L</b> changes the XML encoding from "UTF-8" to "windows-1252". Other <b>-charset</b> settings change the encoding only if there is a corresponding standard XML character set. The <b>-b</b> option causes binary data values to be written, encoded in base64 if necessary. The <b>-t</b> option adds tag table information to the output (see <b>-t</b> for details).</p>
<p>Note: This output is NOT the same as XMP because it uses dynamically-generated property names corresponding to the ExifTool tag names, and not the standard XMP properties. To write XMP instead, use the <b>-o</b> option with an XMP extension for the output file.</p>
<p>Load specified configuration file instead of the default ".ExifTool_config". If used, this option must come before all other arguments on the command line. The <i>CFGFILE</i> name may contain a directory specification (otherwise the file must exist in the current directory), or may be set to an empty string ("") to disable loading of the config file. See the sample configuration file and "config.html" in the full ExifTool distribution for more information about the ExifTool configuration file.</p>
<p>Load specified configuration file instead of the default ".ExifTool_config". If used, this option must come before all other arguments on the command line and applies to all <b>-execute</b>'d commands. The <i>CFGFILE</i> name may contain a directory specification (otherwise the file must exist in the current directory), or may be set to an empty string ("") to disable loading of the config file. See the sample configuration file and "config.html" in the full ExifTool distribution for more information about the ExifTool configuration file.</p>
<p>Execute command for all arguments up to this point on the command line (plus any arguments specified by <b>-common_args</b>). The result is as if the commands were executed as separate command lines (with the exception of the <b>-use</b> option which remains in effect for subsequent commands). Allows multiple commands to be executed from a single command line. <i>NUM</i> is an optional number that is echoed in the "{ready}" message when using the <b>-stay_open</b> feature.</p>
<p>Execute command for all arguments up to this point on the command line (plus any arguments specified by <b>-common_args</b>). The result is as if the commands were executed as separate command lines (with the exception of the <b>-config</b> and <b>-use</b> options which remain in effect for subsequent commands). Allows multiple commands to be executed from a single command line. <i>NUM</i> is an optional number that is echoed in the "{ready}" message when using the <b>-stay_open</b> feature.</p>
<p><b>The OS X package</b> installs the ExifTool command-line application and
libraries in /usr/local/bin. After installing, type "<code>exiftool</code>" in
@ -384,7 +384,7 @@ for each file format.</p>
<tr><td><ahref="TagNames/OOXML.html">POTX, POTM</a></td><td>R</td><td>Office Open XML Presentation Template [Macro-enabled]</td><td>-</td><td>-</td><td>-</td><td>-</td><td>R <ahref="TagNames/OOXML.html">XML</a><ahref="TagNames/ZIP.html">ZIP</a></td></tr>
<tr><td><ahref="TagNames/OOXML.html">PPSX, PPSM</a></td><td>R</td><td>Office Open XML Presentation Slideshow [Macro-enabled]</td><td>-</td><td>-</td><td>-</td><td>-</td><td>R <ahref="TagNames/OOXML.html">XML</a><ahref="TagNames/ZIP.html">ZIP</a></td></tr>
<tr><td><ahref="TagNames/OOXML.html">PPTX, PPTM</a></td><td>R</td><td>Office Open XML Presentation [Macro-enabled]</td><td>-</td><td>-</td><td>-</td><td>-</td><td>R <ahref="TagNames/OOXML.html">XML</a><ahref="TagNames/ZIP.html">ZIP</a></td></tr>
<tr><td><ahref="TagNames/Photoshop.html">PSD, PSB</a></td><td>R/W</td><td>PhotoShop Document / Large Document</td><td>R/W/C</td><td>R/W/C</td><td>R/W/C</td><td>R/W/C</td><td>R <ahref="TagNames/Photoshop.html">Photoshop</a></td></tr>
<tr><td><ahref="TagNames/Photoshop.html">PSD, PSB, PSDT</a></td><td>R/W</td><td>PhotoShop Document / Large Document / Template</td><td>R/W/C</td><td>R/W/C</td><td>R/W/C</td><td>R/W/C</td><td>R <ahref="TagNames/Photoshop.html">Photoshop</a></td></tr>
<li><ahref="exiftool_pod.html">exiftool Application Documentation</a> (<ahref="http://owl.phy.queensu.ca/~phil/exiftool/exiftool_pod.pdf">download in PDF format</a>)</li>
<li><ahref="ExifTool.html">Image::ExifTool API Documentation</a> (<ahref="http://owl.phy.queensu.ca/~phil/exiftool/ExifTool.pdf">download in PDF format</a>)</li>
<li><ahref="Shift.html">Date/Time Shift Module</a> (<ahref="http://owl.phy.queensu.ca/~phil/exiftool/Shift.pdf">download in PDF format</a>)</li>
@ -1197,6 +1197,7 @@ three droplets to extract information [exiftool must be installed] (thanks to Ro
<li><ahref="https://savannah.nongnu.org/projects/fotopreprocessor/">FotoPreProcessor</a>: PyQt4-based frontend for exiftool to graphically edit metadata</li>
<li><ahref="http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,4715.0.html">ExZenToo</a>: Script for basic ExifTool GUI using Zenity</li>
<li><ahref="https://github.com/Glutanimate/PDFMtEd">PDFMted</a>: A set of bash scripts for easy viewing and editing of PDF metadata</li>
<li><ahref="https://github.com/HeLiBloks/exiftool-zsh-completion">exiftool-zsh-completion</a>: zsh completion for exiftool</li>
@ -1256,8 +1257,9 @@ three droplets to extract information [exiftool must be installed] (thanks to Ro
<li><ahref="http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,5381.0.html">ExifTool_PHP_StayOpen</a>: ExifTool PHP fast processing script using -stayOpen and Gearman</li>
<li><ahref="http://sourceforge.net/projects/moss/">Moss</a>: Collection of Java utilities which includes an exiftool interface</li>
<li><ahref="http://im4java.sourceforge.net">im4java</a>: Java interface to ImageMagick, ExifTool, and other image utilities</li>
<li><ahref="http://www.thebuzzmedia.com/software/exiftool-enhanced-java-integration-for-exiftool/">Java ExifTool</a>: Enhanced Java Integration for ExifTool</li>
<li><ahref="https://github.com/mjeanroy/exiftool">Java ExifTool</a>: Enhanced Java Integration for ExifTool</li>
<li><ahref="https://bitbucket.org/P_W999/j-exiftool/wiki/Home">J-ExifTool</a>: Open-source, cross platform Java7 library to read/write Exif tags in images</li>
<li><ahref="https://github.com/mceachen/exiftool-vendored">exiftool-vendored</a>: Blazing-fast, cross-platform Node.js access to ExifTool</li>
<li><ahref="http://u88.n24.queensu.ca/~bogdan/articles/delphi01.html">How to call ExifTool from Delphi</a>, by Bogdan Hrastnik</li>