/jpgraph/docs/chunkhtml/ch25s02.html
HTML | 477 lines | 458 code | 19 blank | 0 comment | 0 complexity | 7cf78bcac1987bce8bab1024a9c7e1aa MD5 | raw file
Possible License(s): GPL-3.0, BSD-3-Clause, LGPL-2.0, LGPL-2.1, LGPL-3.0
- <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>25.2. Creating barcodes</title><link rel="stylesheet" href="manual.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.74.0"><link rel="home" href="index.html" title="JpGraph Manual"><link rel="up" href="ch25.html" title="Chapter 25. Datamatrix (2D-Barcode)"><link rel="prev" href="ch25.html" title="Chapter 25. Datamatrix (2D-Barcode)"><link rel="next" href="ch25s03.html" title="25.3. Example script"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">25.2. Creating barcodes</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch25.html">Prev</a> </td><th width="60%" align="center">Chapter 25. Datamatrix (2D-Barcode)</th><td width="20%" align="right"> <a accesskey="n" href="ch25s03.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2614278"></a>25.2. Creating barcodes</h2></div></div></div><p>In order to use datamatrix barcodes the module
- "<code class="filename">datamatrix/datamatrix.inc.php</code>" must first be included.</p><p>Usage of Datamatrix barcodes follows a similar schema as for the linear and PDF417
- barcodes with concepts of an encoder and backend. The principle of the overall
- encodation process is shown in <a class="xref" href="ch25s02.html#fig.datamatrix-encodation-principle" title="Figure 25.4. Datamatrix encodation principle">Figure 25.4</a></p><div class="figure"><a name="fig.datamatrix-encodation-principle"></a><p class="title"><b>Figure 25.4. Datamatrix encodation principle</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/datamatrix-encodation-principle.png" alt="Datamatrix encodation principle"></div></div></div><br class="figure-break"><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2614329"></a>25.2.1. Getting started</h3></div></div></div><p>Assuming that the library is installed where it can be found by PHP it is now very
- simple to create a basic Data Matrix symbol using just default values. We first show
- the complete first example and then discuss it. In the following scripts we will
- assume that the include path has the core JpGraph directory in its path.</p><p>All barcode creation follows the following basic three steps :</p><p>
- </p><div class="orderedlist"><ol type="1"><li><p>Create an instance of the encoder with the chosen datamatrix layout as
- an instance of <code class="code">class Datamatrix</code></p></li><li><p>Create an instance of a suitable backend for the chosen output format
- (image or postscript) by calling the
- <code class="code">DatamatrixBackenFactory::Create()</code></p></li><li><p>Encode data and send it back to the browser or to a file with a call
- to the backend <code class="code">Backend::Stroke()</code> method.</p></li></ol></div><p>
- </p><p>The following script shows how to create the simplest possible barcode (in PNG
- format) representing the data string "<code class="code">The first datamatrix</code>" encoded
- using all default values. The resulting barcode is shown in <a class="xref" href="ch25s02.html#fig.datamatrix_ex00" title="Figure 25.5. The simplest possible datamatrix script (datamatrix_ex00.php)">Figure 25.5</a></p><p>
- </p><div class="example"><a name="example.datamatrix_ex00"></a><p class="title"><b>Example 25.1. The simplest possible datamatrix script (<code class="filename">datamatrix_ex00.php</code>) </b></p><div class="example-contents"><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- </pre></td><td class="hl-main" valign="top"><pre><span class="hl-inlinetags"><?php</span><span class="hl-code"> </span><span class="hl-comment">//</span><span class="hl-comment"> content="text/plain; charset=utf-8"</span><span class="hl-comment"></span><span class="hl-code">
- </span><span class="hl-reserved">require_once</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">jpgraph/datamatrix/datamatrix.inc.php</span><span class="hl-quotes">'</span><span class="hl-brackets">)</span><span class="hl-code">;
-
- </span><span class="hl-var">$data</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">The first datamatrix</span><span class="hl-quotes">'</span><span class="hl-code">;
-
- </span><span class="hl-var">$encoder</span><span class="hl-code"> = </span><span class="hl-identifier">DatamatrixFactory</span><span class="hl-code">::</span><span class="hl-identifier">Create</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-var">$backend</span><span class="hl-code"> = </span><span class="hl-identifier">DatamatrixBackendFactory</span><span class="hl-code">::</span><span class="hl-identifier">Create</span><span class="hl-brackets">(</span><span class="hl-var">$encoder</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-var">$backend</span><span class="hl-code">-></span><span class="hl-identifier">Stroke</span><span class="hl-brackets">(</span><span class="hl-var">$data</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-inlinetags">?></span></pre></td></tr></table></div></div></div><p><br class="example-break"> </p><div class="figure"><a name="fig.datamatrix_ex00"></a><p class="title"><b>Figure 25.5. The simplest possible datamatrix script <code class="uri"><a class="uri" href="example_src/datamatrix_ex00.html" target="_top">(<code class="filename">datamatrix_ex00.php</code>)</a></code> </b></p><div class="figure-contents"><span class="inlinemediaobject"><img src="images/datamatrix_ex00.png" alt="The simplest possible datamatrix script (datamatrix_ex00.php)"></span></div></div><p><br class="figure-break">
- </p><p>(As can be seen this follows the same principles as the creation of PDF417
- symbols)</p><p>The principle is the same for all type of data matrix symbol creations. We first
- create an instance of the chosen encoder. In this case a standard ECC-200 encoder by
- creating an instance of <code class="code">class Datamatrix</code>. We then create a suitable
- backend that handles the output of the barcode. By default the output will be an
- image encoded in the PNG image format.</p><p>The final step is to send back the generated image to the browser with a call to
- the method <code class="code">Backend::Stroke()</code> with the data to be encoded as its first
- argument.</p><p>The example above does not have any error handling. If there is some error in the
- process an exception will be thrown in the same way as in other places in the
- library. The default exception will display a standard library image error box. An
- example of this is shown in <a class="xref" href="ch25s02.html#fig.datamatrix-error-image" title="Figure 25.6. Datamatrix error image">Figure 25.6</a>. </p><div class="figure"><a name="fig.datamatrix-error-image"></a><p class="title"><b>Figure 25.6. Datamatrix error image</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/datamatrix_errormsg.png" alt="Datamatrix error image"></div></div></div><br class="figure-break"><p>If some additional processing is necessary and just display a text based
- re-formatted error message we could change the above code to catch this exception as
- the following example shows.</p><p>
- </p><div class="example"><a name="example.datamatrix_ex0"></a><p class="title"><b>Example 25.2. Datamatrix with basic error handling (<code class="filename">datamatrix_ex0.php</code>) </b></p><div class="example-contents"><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- </pre></td><td class="hl-main" valign="top"><pre><span class="hl-inlinetags"><?php</span><span class="hl-code"> </span><span class="hl-comment">//</span><span class="hl-comment"> content="text/plain; charset=utf-8"</span><span class="hl-comment"></span><span class="hl-code">
- </span><span class="hl-reserved">require_once</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">jpgraph/datamatrix/datamatrix.inc.php</span><span class="hl-quotes">'</span><span class="hl-brackets">)</span><span class="hl-code">;
-
- </span><span class="hl-var">$data</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">The first datamatrix</span><span class="hl-quotes">'</span><span class="hl-code">;
- </span><span class="hl-var">$encoder</span><span class="hl-code"> = </span><span class="hl-identifier">DatamatrixFactory</span><span class="hl-code">::</span><span class="hl-identifier">Create</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-var">$encoder</span><span class="hl-code">-></span><span class="hl-identifier">SetEncoding</span><span class="hl-brackets">(</span><span class="hl-identifier">ENCODING_ASCII</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-var">$backend</span><span class="hl-code"> = </span><span class="hl-identifier">DatamatrixBackendFactory</span><span class="hl-code">::</span><span class="hl-identifier">Create</span><span class="hl-brackets">(</span><span class="hl-var">$encoder</span><span class="hl-brackets">)</span><span class="hl-code">;
-
- </span><span class="hl-comment">//</span><span class="hl-comment"> We increase the module width to 3 pixels</span><span class="hl-comment"></span><span class="hl-code">
- </span><span class="hl-var">$backend</span><span class="hl-code">-></span><span class="hl-identifier">SetModuleWidth</span><span class="hl-brackets">(</span><span class="hl-number">3</span><span class="hl-brackets">)</span><span class="hl-code">;
-
- </span><span class="hl-reserved">try</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
- </span><span class="hl-var">$backend</span><span class="hl-code">-></span><span class="hl-identifier">Stroke</span><span class="hl-brackets">(</span><span class="hl-var">$data</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-brackets">}</span><span class="hl-code"> </span><span class="hl-reserved">catch</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-identifier">Exception</span><span class="hl-code"> </span><span class="hl-var">$e</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
- </span><span class="hl-reserved">echo</span><span class="hl-code"> </span><span class="hl-quotes">'</span><span class="hl-string">Datamatrix error: </span><span class="hl-quotes">'</span><span class="hl-code">.</span><span class="hl-var">$e</span><span class="hl-code">-></span><span class="hl-identifier">GetMessage</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-quotes">"</span><span class="hl-special">\n</span><span class="hl-quotes">"</span><span class="hl-code">;
- </span><span class="hl-reserved">exit</span><span class="hl-brackets">(</span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-brackets">}</span><span class="hl-code">
- </span><span class="hl-inlinetags">?></span></pre></td></tr></table></div></div></div><p><br class="example-break"> </p><div class="figure"><a name="fig.datamatrix_ex0"></a><p class="title"><b>Figure 25.7. Datamatrix with basic error handling <code class="uri"><a class="uri" href="example_src/datamatrix_ex0.html" target="_top">(<code class="filename">datamatrix_ex0.php</code>)</a></code> </b></p><div class="figure-contents"><span class="inlinemediaobject"><img src="images/datamatrix_ex0.png" alt="Datamatrix with basic error handling (datamatrix_ex0.php)"></span></div></div><p><br class="figure-break">
- </p><p>In contrast to the PDF417 encodation process there is no option to select an level
- of error correction. The error correction level is automatically specified in the
- standard depending on the size of the barcode. As a final initial example the next
- script uses the backend method <code class="code">Backend::SetModuleWidth($aWidth)</code> to
- increase the width of one module.</p><p>
- </p><div class="example"><a name="example.datamatrix_ex1"></a><p class="title"><b>Example 25.3. Datamatrix with modified module width (<code class="filename">datamatrix_ex1.php</code>) </b></p><div class="example-contents"><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- </pre></td><td class="hl-main" valign="top"><pre><span class="hl-inlinetags"><?php</span><span class="hl-code"> </span><span class="hl-comment">//</span><span class="hl-comment"> content="text/plain; charset=utf-8"</span><span class="hl-comment"></span><span class="hl-code">
- </span><span class="hl-reserved">require_once</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">jpgraph/datamatrix/datamatrix.inc.php</span><span class="hl-quotes">'</span><span class="hl-brackets">)</span><span class="hl-code">;
-
- </span><span class="hl-var">$data</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">123456</span><span class="hl-quotes">'</span><span class="hl-code">;
-
- </span><span class="hl-var">$encoder</span><span class="hl-code"> = </span><span class="hl-identifier">DatamatrixFactory</span><span class="hl-code">::</span><span class="hl-identifier">Create</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-var">$backend</span><span class="hl-code"> = </span><span class="hl-identifier">DatamatrixBackendFactory</span><span class="hl-code">::</span><span class="hl-identifier">Create</span><span class="hl-brackets">(</span><span class="hl-var">$encoder</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-var">$backend</span><span class="hl-code">-></span><span class="hl-identifier">SetModuleWidth</span><span class="hl-brackets">(</span><span class="hl-number">3</span><span class="hl-brackets">)</span><span class="hl-code">;
-
- </span><span class="hl-comment">//</span><span class="hl-comment"> Create the barcode from the given data string and write to output file</span><span class="hl-comment"></span><span class="hl-code">
- </span><span class="hl-reserved">try</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
- </span><span class="hl-var">$backend</span><span class="hl-code">-></span><span class="hl-identifier">Stroke</span><span class="hl-brackets">(</span><span class="hl-var">$data</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-brackets">}</span><span class="hl-code"> </span><span class="hl-reserved">catch</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-identifier">Exception</span><span class="hl-code"> </span><span class="hl-var">$e</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
- </span><span class="hl-var">$errstr</span><span class="hl-code"> = </span><span class="hl-var">$e</span><span class="hl-code">-></span><span class="hl-identifier">GetMessage</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-reserved">echo</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">Datamatrix error message: </span><span class="hl-var">$errstr</span><span class="hl-special">\n</span><span class="hl-quotes">"</span><span class="hl-code">;
- </span><span class="hl-brackets">}</span><span class="hl-code">
-
- </span><span class="hl-inlinetags">?></span></pre></td></tr></table></div></div></div><p><br class="example-break"> </p><div class="figure"><a name="fig.datamatrix_ex1"></a><p class="title"><b>Figure 25.8. Datamatrix with modified module width <code class="uri"><a class="uri" href="example_src/datamatrix_ex1.html" target="_top">(<code class="filename">datamatrix_ex1.php</code>)</a></code> </b></p><div class="figure-contents"><span class="inlinemediaobject"><img src="images/datamatrix_ex1.png" alt="Datamatrix with modified module width (datamatrix_ex1.php)"></span></div></div><p><br class="figure-break">
- </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2614675"></a>25.2.2. Error handling</h3></div></div></div><p>As in other parts of the library the Datamatrix module throws an exception when an
- error occurs. As shown in the previous section an error image is the default if no
- explicit <code class="code">try {} catch {}</code> statement is added to the script.</p><p>The script below shows how to catch the error, do some possible clean up and then
- explicitly create and send back the error image.</p><p>
- </p><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- </pre></td><td class="hl-main" valign="top"><pre><span class="hl-inlinetags"><?php</span><span class="hl-code">
- ...
- </span><span class="hl-reserved">try</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
- </span><span class="hl-var">$backend</span><span class="hl-code">-></span><span class="hl-identifier">Stroke</span><span class="hl-brackets">(</span><span class="hl-var">$data</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-brackets">}</span><span class="hl-code"> </span><span class="hl-reserved">catch</span><span class="hl-brackets">(</span><span class="hl-code"> </span><span class="hl-identifier">Exception</span><span class="hl-code"> </span><span class="hl-var">$e</span><span class="hl-code"> </span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
- </span><span class="hl-identifier">doCleanup</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-var">$errobj</span><span class="hl-code"> = </span><span class="hl-reserved">new</span><span class="hl-code"> </span><span class="hl-identifier">DMErrObjectImg</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-var">$errobj</span><span class="hl-code">-></span><span class="hl-identifier">Raise</span><span class="hl-brackets">(</span><span class="hl-var">$e</span><span class="hl-code">-></span><span class="hl-identifier">getMessage</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-brackets">}</span><span class="hl-code">
- </span><span class="hl-inlinetags">?></span></pre></td></tr></table></div><p>
- </p><p>another variant of this would be to re-throw the exception after the cleanup has
- been performed as the following example shows</p><p>
- </p><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- </pre></td><td class="hl-main" valign="top"><pre><span class="hl-inlinetags"><?php</span><span class="hl-code">
- ...
- </span><span class="hl-reserved">try</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
- </span><span class="hl-var">$backend</span><span class="hl-code">-></span><span class="hl-identifier">Stroke</span><span class="hl-brackets">(</span><span class="hl-var">$data</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-brackets">}</span><span class="hl-code"> </span><span class="hl-reserved">catch</span><span class="hl-brackets">(</span><span class="hl-code"> </span><span class="hl-identifier">Exception</span><span class="hl-code"> </span><span class="hl-var">$e</span><span class="hl-code"> </span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
- </span><span class="hl-identifier">doCleanup</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-reserved">throw</span><span class="hl-code"> </span><span class="hl-var">$e</span><span class="hl-code">;
- </span><span class="hl-brackets">}</span><span class="hl-code">
- </span><span class="hl-inlinetags">?></span></pre></td></tr></table></div><p>
- </p><p>It is also possible to get hold of the internal error code that corresponds to
- each error message by calling the PHP standard exception method
- <code class="code">Exception::getCode()</code> as the following example shows</p><p>
- </p><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- </pre></td><td class="hl-main" valign="top"><pre><span class="hl-inlinetags"><?php</span><span class="hl-code">
- ...
- </span><span class="hl-reserved">try</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
- </span><span class="hl-var">$backend</span><span class="hl-code">-></span><span class="hl-identifier">Stroke</span><span class="hl-brackets">(</span><span class="hl-var">$data</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-brackets">}</span><span class="hl-code"> </span><span class="hl-reserved">catch</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-identifier">Exception</span><span class="hl-code"> </span><span class="hl-var">$e</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
- </span><span class="hl-var">$errstr</span><span class="hl-code"> = </span><span class="hl-var">$e</span><span class="hl-code">-></span><span class="hl-identifier">GetMessage</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-var">$errcode</span><span class="hl-code"> = </span><span class="hl-var">$e</span><span class="hl-code">-></span><span class="hl-identifier">GetCode</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-reserved">echo</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">Datamatrix error (</span><span class="hl-var">$errcode</span><span class="hl-string">). Message: </span><span class="hl-var">$errstr</span><span class="hl-special">\n</span><span class="hl-quotes">"</span><span class="hl-code">;
- </span><span class="hl-brackets">}</span><span class="hl-code">
- </span><span class="hl-inlinetags">?></span></pre></td></tr></table></div><p>
- </p><p><a class="xref" href="ch25s02.html#table.datamatrix-error-messages" title="Table 25.3. Datamatrix error messages">Table 25.3</a> lists the errors that can be
- thrown by the datamatrix module (the table deliberately excludes internal error
- messages).</p><p>
- </p><div class="table"><a name="table.datamatrix-error-messages"></a><p class="title"><b>Table 25.3. Datamatrix error messages</b></p><div class="table-contents"><table summary="Datamatrix error messages" border="1"><colgroup><col><col></colgroup><thead><tr><th align="center">Error number</th><th align="center">Error messages</th></tr></thead><tbody><tr><td class="error-number" align="center">-1</td><td class="error-text">Data is too long to fit specified symbol
- size</td></tr><tr><td class="error-number" align="center">-2</td><td class="error-text">The BASE256 data is too long to fit
- available symbol size</td></tr><tr><td class="error-number" align="center">-3</td><td class="error-text">Data must have at least three characters
- for C40 encodation</td></tr><tr><td class="error-number" align="center">-4</td><td class="error-text">Data must have at least three characters
- for TEXT encodation</td></tr><tr><td class="error-number" align="center">-8</td><td class="error-text">The given data can not be encoded using X12
- encodation.</td></tr><tr><td class="error-number" align="center">-9</td><td class="error-text">The "tilde" encoded data is not
- valid.</td></tr><tr><td class="error-number" align="center">-10</td><td class="error-text">Data must have at least three characters
- for X12 encodation</td></tr><tr><td class="error-number" align="center">-11</td><td class="error-text">Specified data can not be encoded with
- datamatrix 000 140</td></tr><tr><td class="error-number" align="center">-12</td><td class="error-text">Can not create image</td></tr><tr><td class="error-number" align="center">-13</td><td class="error-text">Invalid color specification</td></tr><tr><td class="error-number" align="center">-15</td><td class="error-text">This PHP installation does not support the
- chosen image encoding format</td></tr><tr><td class="error-number" align="center">-20</td><td class="error-text">The specification for shape of matrix is
- out of bounds (0,29)</td></tr><tr><td class="error-number" align="center">-21</td><td class="error-text">Cannot open the data file specifying bit
- placement for Datamatrix 200</td></tr><tr><td class="error-number" align="center">-22</td><td class="error-text">Datafile for bit placement is corrupt, crc
- checks fails.</td></tr><tr><td class="error-number" align="center">-26</td><td class="error-text">Cannot open the data file specifying bit
- placement for Datamatrix 140</td></tr><tr><td class="error-number" align="center">-30</td><td class="error-text">The symbol size specified for ECC140 type
- Datamatrix is not valid</td></tr><tr><td class="error-number" align="center">-31</td><td class="error-text">Data is too long to fit into any available
- matrix size for datamatrix 140</td></tr><tr><td class="error-number" align="center">-34</td><td class="error-text">Cannot open file %s for writing.</td></tr><tr><td class="error-number" align="center">-35</td><td class="error-text">Cannot write to file %s .</td></tr><tr><td class="error-number" align="center">-99</td><td class="error-text">EDIFACT encodation not implemented</td></tr><tr><td class="error-number" align="center">-100</td><td class="error-text">
- <p>Datamatrix Error: HTTP headers have already been
- sent.</p>
- <p>Caused by output from file %s at line %d</p>
- <p>Explanation: HTTP headers have already been sent back to
- the browser indicating the data as text before the library
- got a chance to send it's image HTTP header to this browser.
- This makes it impossible for the Datamatrix library to send
- back image data to the browser (since that would be
- interpretated as text by the browser and show up as junk
- text).</p>
- <p>Most likely you have some text in your script before the
- call to DatamatrixBackend::Stroke(). </p>
- <p>If this texts gets sent back to the browser the browser
- will assume that all data is plain text. Look for any text
- (even spaces and newlines) that might have been sent back to
- the browser.</p>
- <p>For example it is a common mistake to leave a blank line
- before the opening "<?php"</p>
- </td></tr></tbody></table></div></div><p><br class="table-break">
- </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2615310"></a>25.2.3. Encodation options</h3></div></div></div><p>The primary encodation option is to manually specify the shape of the Datamatrix
- barcode. By default the symbol size will be chosen as the smallest possible. However
- some application require that usage of a fixed size symbol shape. </p><p>The available shapes are listed in <a class="xref" href="ch25.html#table.datamatrix-ecc200-size" title="Table 25.2. Maximum data capacity for the different symbol sizes in ECC-200 Data Matrix subset.">Table 25.2</a>. The wanted shape is specified when
- the instance of the encoder is created or by a call to
- <code class="code">Datamatrix::SetSize()</code>. The shape is specified by a symbolic
- constant that corresponds to each available shape in <a class="xref" href="ch25.html#table.datamatrix-ecc200-size" title="Table 25.2. Maximum data capacity for the different symbol sizes in ECC-200 Data Matrix subset.">Table 25.2</a>. The symbol name is
- "<code class="code">DMAT_<H>x<W></code>" where <code class="code"><H></code> is the height (in
- modules) and <code class="code"><W></code> is the width (in modules). For example the
- following line specifies a 24 module square symbol </p><p>
- </p><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
- </pre></td><td class="hl-main" valign="top"><pre><span class="hl-code">$encoder->SetSize(DMAT_24x24);</span></pre></td></tr></table></div><p>
- </p><p>In addition to the sizes specified in <a class="xref" href="ch25.html#table.datamatrix-ecc200-size" title="Table 25.2. Maximum data capacity for the different symbol sizes in ECC-200 Data Matrix subset.">Table 25.2</a> there is also an option to specify
- automatic sizing (which is the default). The following script sets the sizing to be
- automatic.</p><p>
- </p><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
- </pre></td><td class="hl-main" valign="top"><pre><span class="hl-code">$encoder->SetSize(DMAT_AUTO);</span></pre></td></tr></table></div><p>
- </p><p>As was discussed in <a class="xref" href="ch25.html#sec.encodation-efficiency" title="25.1.5. Encodation efficiency">Section 25.1.5</a> there are
- several ways by which data can be encoded. By default the encoder will use an
- optimal algorithm to create a combination of the available encodation schema to
- create the smallest possible symbol. In some application it might however be stated
- that a specific encodation method should be chosen. </p><p>The encoding method is a property of the encodation class and is set with a call
- to </p><p>
- </p><div class="itemizedlist"><ul type="disc"><li><p><code class="code">Datamatrix::SetEncoding($aEncoding=ENCODING_ASCII)</code>
- </p></li></ul></div><p>
- </p><p>The encoding is specified as one of the symbolic constants shown in <a class="xref" href="ch25s02.html#table.datamatrix-symbikc-encoding" title="Table 25.4. Datamatrix encodation schemas">Table 25.4</a></p><div class="table"><a name="table.datamatrix-symbikc-encoding"></a><p class="title"><b>Table 25.4. Datamatrix encodation schemas</b></p><div class="table-contents"><table summary="Datamatrix encodation schemas" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>Symbolic constant</th><th>Encoding schema</th><th>Character set</th></tr></thead><tbody><tr><td>ENCODING_AUTO</td><td>--</td><td>An optimal combination of all encodation schema</td></tr><tr><td>ENCODING_ASCII</td><td>ASCII</td><td>Most efficient for numeric data</td></tr><tr><td>ENCODING_C40</td><td>C40</td><td>Primarily upper-case alphanumeric</td></tr><tr><td>ENCODING_TEXT</td><td>Text</td><td>Primarily lower-case alphanumeric</td></tr><tr><td>ENCODING_X12</td><td>X12</td><td>ANSI X12 EDI data set</td></tr><tr><td>ENCODING_EDIFACT</td><td>EDIFACT</td><td>ASCII values 32-94</td></tr><tr><td>ENCODING_BASE256</td><td>Base 256</td><td>All byte values 0-255</td></tr></tbody></table></div></div><br class="table-break"><p>The following example sets the ASCII encodation schema</p><p>
- </p><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
- </pre></td><td class="hl-main" valign="top"><pre><span class="hl-code">$encoder->SetEncoding(ENCODING_ASCII);</span></pre></td></tr></table></div><p>
- </p><p>The default automatic encoding is the same as</p><p>
- </p><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
- </pre></td><td class="hl-main" valign="top"><pre><span class="hl-code">$encoder->SetSize(ENCODING_AUTO);</span></pre></td></tr></table></div><p>
- </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2615653"></a>25.2.4. Processing special input characters</h3></div></div></div><p>In order to allow the specification of special input data in normal ASCII
- encodation for easy entering from a keyboard the library supports what is commonly
- known as "tilde" processing. When this is enabled (it is disabled by default)
- certain character sequences that begins with a tilde sign (i.e. "~") will be
- translated to a special ASCII value that cannot normally be entered from a
- keyboard.</p><p>When tilde mode is enabled with a call to the method </p><p>
- </p><div class="itemizedlist"><ul type="disc"><li><p><code class="code">Datamatrix::SetTilde($aFlg=true)</code></p></li></ul></div><p>
- </p><p><a class="xref" href="ch25s02.html#table.datamatrix-tilde-processing" title="Table 25.5. Tilde processing translating">Table 25.5</a> lists the translations
- that will then be enabled on the input data. Some of the translations are technical
- and requires full understanding of Datamatrix standard to be used.</p><div class="table"><a name="table.datamatrix-tilde-processing"></a><p class="title"><b>Table 25.5. Tilde processing translating</b></p><div class="table-contents"><table summary="Tilde processing translating" border="1"><colgroup><col><col></colgroup><thead><tr><th>Input sequence</th><th>Translation</th></tr></thead><tbody><tr><td>~X : where 'X' is a character in the range [@-Z]</td><td>Translates to ASCII value 0-25, i.e. ~@==0, ~A==1, ~B==2 ,
- ...</td></tr><tr><td>~1</td><td>Represents the character FNC1. Alternate Data Type Identifier.
- See Table 6: ISO 16022</td></tr><tr><td>~2nnmmfffggg</td><td>
- <p>Structured Append. This code is only allowed in the first
- position of the data. Up to 16 ECC 200 symbols may be appended
- in a structured format. The structured append is specified with
- symbol index, total number of symbols and a file identification. </p>
- <p>The first two values "nn" is the position of this particular
- symbol specified as two digits in the range of 01-16. </p>
- <p>The second two values "mm" is the total number of symbols in
- this structured append in the range 02-16 specified as two
- digits. </p>
- <p>The last two 3 digit codewords are the file identification
- specified with digits and necessary leading 0:s to make it a
- full three digits. For example. Assume that we want to encode
- the 4:th symbol from a total of 9 symbols and with the file
- identification "0,1". This would then be encoded as
- "~20409000001". Note: Internally this is translated to three
- codewords with the reserved starting codeword of ASCII
- 233.</p>
- </td></tr><tr><td>~5 and ~6</td><td>
- <p>The special 05 and 06 Macros. Can only be in the first
- position and is used to encode industry standard headers in
- certain structured formats. </p>
- <p>Macro 05 is translated by the barcode reader to : Symbol
- prefix: chr(30) chr(05) chr(29) Symbol postfix: chr(30) chr(04)
- Macro 06 is translated by the barcode reader to : Symbol prefix:
- chr(30) chr(06) chr(29 Symbol postfix: chr(30) chr(04)</p>
- </td></tr><tr><td>~7nnnnnn</td><td>
- <p>Extended Channel Interpretation (ECI) nnnnnn. </p>
- <p>The ECI protocol allows the output data stream to have
- interpretations different from that of the default character
- set. See "<span class="italic">Extended Channel
- Interpretation Assignments</span>" document (available
- from ISO) for a list of channels and there meaning. </p>
- <p>The ECI is identified by a 6-digit number which is encoded
- according to Table 10: in the ISO 16022:2000 specification. This
- is the encodation that is used for the "~7" tilde specification
- of the ECI protocol.</p>
- </td></tr><tr><td>~9</td><td>
- <p>Send the special control code (ASCII=234) so that the reader
- will interpret the rest of the symbol as a bar code reader
- programming instruction.</p>
- </td></tr><tr><td>~dnnn</td><td>
- <p>Character value as 3 digits, i.e. ~d142 means ASCII value
- 142</p>
- </td></tr></tbody></table></div></div><br class="table-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2615957"></a>25.2.5. Creating different backends</h3></div></div></div><p>In order to create the actual output one or more backends must be created. The
- Datamatrix supports the following backends:</p><p>
- </p><div class="itemizedlist"><ul type="disc"><li><p><code class="code">BACKEND_IMAGE</code>, Create an image backend. This is the
- default backend if no explicit backend is specified.</p></li><li><p><code class="code">BACKEND_PS</code>, Create a postscript backend. The text string
- that represents the postscript for the barcode is returned directly from
- the <code class="code">Backend::Stroke()</code></p></li><li><p><code class="code">BACKEND_EPS</code>, Create an encapsulated postscript
- backend</p></li><li><p><code class="code">BACKEND_ASCII</code>, This is a special backend which will
- generate an ASCII rendering of the datamatrix barcode. This is mostly
- practical for technical investigations regarding the technical structure
- of a Datamatrix barcode.</p></li></ul></div><p>
- </p><p>The following code snippet shows two ways of creating a barcode image
- backend.</p><p>
- </p><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
- 2
- </pre></td><td class="hl-main" valign="top"><pre><span class="hl-code">// Create an image backend
- $backend = DatamatrixBackendFactory::Create($encoder);</span></pre></td></tr></table></div><p>
- </p><p>
- </p><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
- 2
- </pre></td><td class="hl-main" valign="top"><pre><span class="hl-code">// Create an image backend
- $backend = DatamatrixBackendFactory::Create($encoder, BACKEND_IMAGE);</span></pre></td></tr></table></div><p>
- </p><p>The following code shows a complete script to generate a postscript output</p><p>
- </p><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- </pre></td><td class="hl-main" valign="top"><pre><span class="hl-inlinetags"><?php</span><span class="hl-code">
- </span><span class="hl-reserved">require_once</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">jpgraph/datamatrix/datamatrix.inc.php</span><span class="hl-quotes">'</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-var">$data</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">0123456789</span><span class="hl-quotes">'</span><span class="hl-code">;
-
- </span><span class="hl-comment">//</span><span class="hl-comment"> Create and set parameters for the encoder</span><span class="hl-comment"></span><span class="hl-code">
- </span><span class="hl-var">$encoder</span><span class="hl-code"> = </span><span class="hl-identifier">DatamatrixFactory</span><span class="hl-code">::</span><span class="hl-identifier">Create</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">;
-
- </span><span class="hl-comment">//</span><span class="hl-comment"> Create the image backend (default)</span><span class="hl-comment"></span><span class="hl-code">
- </span><span class="hl-var">$backend</span><span class="hl-code"> = </span><span class="hl-identifier">DatamatrixBackendFactory</span><span class="hl-code">::</span><span class="hl-identifier">Create</span><span class="hl-brackets">(</span><span class="hl-var">$encoder</span><span class="hl-code">, </span><span class="hl-identifier">BACKEND_PS</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-reserved">try</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
- </span><span class="hl-var">$ps_txt</span><span class="hl-code"> = </span><span class="hl-var">$backend</span><span class="hl-code">-></span><span class="hl-identifier">Stroke</span><span class="hl-brackets">(</span><span class="hl-var">$data</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-reserved">echo</span><span class="hl-code"> </span><span class="hl-quotes">'</span><span class="hl-string"><pre></span><span class="hl-quotes">'</span><span class="hl-code">.</span><span class="hl-var">$ps_txt</span><span class="hl-code">.</span><span class="hl-quotes">'</span><span class="hl-string"></pre></span><span class="hl-quotes">'</span><span class="hl-code">;
- </span><span class="hl-brackets">}</span><span class="hl-code"> </span><span class="hl-reserved">catch</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-identifier">Exception</span><span class="hl-code"> </span><span class="hl-var">$e</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
- </span><span class="hl-var">$errstr</span><span class="hl-code"> = </span><span class="hl-var">$e</span><span class="hl-code">-></span><span class="hl-identifier">GetMessage</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-reserved">echo</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">Datamatrix error message: </span><span class="hl-var">$errstr</span><span class="hl-special">\n</span><span class="hl-quotes">"</span><span class="hl-code">;
- </span><span class="hl-brackets">}</span><span class="hl-code">
- </span><span class="hl-inlinetags">?></span></pre></td></tr></table></div><p>
- </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2616079"></a>25.2.6. Generic backend methods</h3></div></div></div><p>The following methods are available to adjust the final look and feel of the
- barcode</p><p>
- </p><div class="orderedlist"><ol type="1"><li><p><code class="code">Backend::SetColor($aOne, $aZero,
- $aBackground='white')</code></p><p>the color of the 'black' and 'white' modules in the barcode and the
- quiet area around the barcode</p></li><li><p><code class="code">Backend::SetQuietZone($aSize)</code></p><p>the size of the "quiet zone" in pixels for the image backend and in
- points (1 pt = 1/72 inch) for the postscript backend</p></li><li><p><code class="code">Backend::SetModuleWidth($aWidth)</code></p><p>the module width specified in pixels for the image backend and in
- points (1 pt = 1/72 inch) for the postscript backend</p></li><li><p><code class="code">Backend::Stroke($aData, $aFileName='')</code></p><p>create the barcode and send it back the client or store it to a file
- if the second parameter is set. For postscript backends the postscript
- string is returned directly from the method. (See example above)</p></li></ol></div><p>
- </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2616167"></a>25.2.7. Image backend methods</h3></div></div></div><p>For the image backend it is possible to adjust the image encoding format with the
- following method</p><p>
- </p><div class="orderedlist"><ol type="1"><li><p><code class="code">Backend::SetImgFormat($aFormat,$aQuality=75)</code></p><p>Specify image format. Possible values are </p><p>
- </p><div class="itemizedlist"><ul type="disc"><li><p><code class="code">'auto'</code></p></li><li><p><code class="code">'png'</code></p></li><li><p><code class="code">'jpeg'</code></p></li><li><p><code class="code">'gif'</code></p></li></ul></div><p>
- </p><p>For 'jpeg' format the quality parameter is a number in range [1-100]
- and specified how much compression / (Data loss) should be used. 100=no
- compression. Normal values are in the range [60-95]</p><p>The following example sets the image format to 'JPEG' with quality
- 80.</p><p>
- </p><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
- </pre></td><td class="hl-main" valign="top"><pre><span class="hl-code">$backend->SetImgFormat('jpeg', 80);</span></pre></td></tr></table></div><p>
- </p></li></ol></div><p>
- </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2616274"></a>25.2.8. Postscript backend format options</h3></div></div></div><p>For postscript backend it is possible to select whether the postscript should be
- generated as encapsulated postscript. This is controlled by the method</p><p>
- </p><div class="itemizedlist"><ul type="disc"><li><p><code class="code">Backend::SetEPS($aFlg=true)</code></p></li></ul></div><p>
- </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2616306"></a>25.2.9. A template to create barcodes</h3></div></div></div><p>In the example directory in the distribution
- ('<code class="filename">datamatrix/examples</code>') you can find many more examples on
- how to create barcodes. As a good start the following (simple) template may be used
- as a base for further customizations.</p><p>
- </p><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- </pre></td><td class="hl-main" valign="top"><pre><span class="hl-inlinetags"><?php</span><span class="hl-code">
- </span><span class="hl-reserved">require_once</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">jpgraph/datamatrix/datamatrix.inc.php</span><span class="hl-quotes">'</span><span class="hl-brackets">)</span><span class="hl-code">;
-
- </span><span class="hl-var">$data</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">0123456789</span><span class="hl-quotes">'</span><span class="hl-code">;
-
- </span><span class="hl-var">$shape</span><span class="hl-code"> = </span><span class="hl-identifier">DMAT_AUTO</span><span class="hl-code">;
- </span><span class="hl-var">$encoding</span><span class="hl-code"> = </span><span class="hl-identifier">ENCODING_AUTO</span><span class="hl-code">;
- </span><span class="hl-var">$modulewidth</span><span class="hl-code"> = </span><span class="hl-number">3</span><span class="hl-code">;
- </span><span class="hl-var">$quietzone</span><span class="hl-code"> = </span><span class="hl-number">10</span><span class="hl-code">;
- </span><span class="hl-var">$color1</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">black</span><span class="hl-quotes">'</span><span class="hl-code">;
- </span><span class="hl-var">$color0</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">white</span><span class="hl-quotes">'</span><span class="hl-code">;
- </span><span class="hl-var">$colorq</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">white</span><span class="hl-quotes">'</span><span class="hl-code">;
- </span><span class="hl-var">$outputfile</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-quotes">'</span><span class="hl-code">;
-
- </span><span class="hl-comment">//</span><span class="hl-comment"> Create and set parameters for the encoder</span><span class="hl-comment"></span><span class="hl-code">
- </span><span class="hl-var">$encoder</span><span class="hl-code"> = </span><span class="hl-identifier">DatamatrixFactory</span><span class="hl-code">::</span><span class="hl-identifier">Create</span><span class="hl-brackets">(</span><span class="hl-var">$shape</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-var">$encoder</span><span class="hl-code">-></span><span class="hl-identifier">SetEncoding</span><span class="hl-brackets">(</span><span class="hl-var">$encoding</span><span class="hl-brackets">)</span><span class="hl-code">;
-
- </span><span class="hl-comment">//</span><span class="hl-comment"> Create the image backend (default)</span><span class="hl-comment"></span><span class="hl-code">
- </span><span class="hl-var">$backend</span><span class="hl-code"> = </span><span class="hl-identifier">DatamatrixBackendFactory</span><span class="hl-code">::</span><span class="hl-identifier">Create</span><span class="hl-brackets">(</span><span class="hl-var">$encoder</span><span class="hl-brackets">)</span><span class="hl-code">;
-
- </span><span class="hl-comment">//</span><span class="hl-comment"> By default the module width is 2 pixel so we increase it a bit</span><span class="hl-comment"></span><span class="hl-code">
- </span><span class="hl-var">$backend</span><span class="hl-code">-></span><span class="hl-identifier">SetModuleWidth</span><span class="hl-brackets">(</span><span class="hl-var">$modulewidth</span><span class="hl-brackets">)</span><span class="hl-code">;
-
- </span><span class="hl-comment">//</span><span class="hl-comment"> Set Quiet zone</span><span class="hl-comment"></span><span class="hl-code">
- </span><span class="hl-var">$backend</span><span class="hl-code">-></span><span class="hl-identifier">SetQuietZone</span><span class="hl-brackets">(</span><span class="hl-var">$quietzone</span><span class="hl-brackets">)</span><span class="hl-code">;
-
- </span><span class="hl-comment">//</span><span class="hl-comment"> Set other than default colors (one, zero, quiet zone/background)</span><span class="hl-comment"></span><span class="hl-code">
- </span><span class="hl-var">$backend</span><span class="hl-code">-></span><span class="hl-identifier">SetColor</span><span class="hl-brackets">(</span><span class="hl-var">$color1</span><span class="hl-code">, </span><span class="hl-var">$color0</span><span class="hl-code">, </span><span class="hl-var">$colorq</span><span class="hl-brackets">)</span><span class="hl-code">;
-
- </span><span class="hl-comment">//</span><span class="hl-comment"> Create the barcode from the given data string and write to output file</span><span class="hl-comment"></span><span class="hl-code">
- </span><span class="hl-reserved">try</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
- </span><span class="hl-var">$backend</span><span class="hl-code">-></span><span class="hl-identifier">Stroke</span><span class="hl-brackets">(</span><span class="hl-var">$data</span><span class="hl-code">,</span><span class="hl-var">$outputfile</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-brackets">}</span><span class="hl-code"> </span><span class="hl-reserved">catch</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-identifier">Exception</span><span class="hl-code"> </span><span class="hl-var">$e</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
- </span><span class="hl-var">$errstr</span><span class="hl-code"> = </span><span class="hl-var">$e</span><span class="hl-code">-></span><span class="hl-identifier">GetMessage</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">;
- </span><span class="hl-reserved">echo</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">Datamatrix error message: </span><span class="hl-var">$errstr</span><span class="hl-special">\n</span><span class="hl-quotes">"</span><span class="hl-code">;
- </span><span class="hl-brackets">}</span><span class="hl-code">
- </span><span class="hl-inlinetags">?></span></pre></td></tr></table></div><p>
- </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2616350"></a>25.2.10. Sample application</h3></div></div></div><p>As an example the library includes a WEB-based demo barcode creation application.
- This application can be used to easily create barcode through it's WEB interface. It
- is available at '<code class="filename">datamatrix/demoapp/index.html</code>'</p><p>This application is primarily included as a demo on the features available in the
- library and not as a finalized product.</p><p><a class="xref" href="ch25s02.html#fig.datamatrix-demoapp" title="Figure 25.9. Datamatrix WEB-based demo application">Figure 25.9</a> shows a screen shot of the
- application interface.</p><div class="figure"><a name="fig.datamatrix-demoapp"></a><p class="title"><b>Figure 25.9. Datamatrix WEB-based demo application</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/datamatrix-demoapp.png" alt="Datamatrix WEB-based demo application"></div></div></div><br class="figure-break"></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch25.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch25.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch25s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 25. Datamatrix (2D-Barcode) </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 25.3. Example script</td></tr></table></div></body></html>