642 lines
61 KiB
HTML
642 lines
61 KiB
HTML
|
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Creating barcodes</title><link rel="stylesheet" type="text/css" href="manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.0"><link rel="home" href="index.html" title="JpGraph Manual"><link rel="up" href="ch26.html" title="Chapter 26. Datamatrix (2D-Barcode)"></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">Creating barcodes</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center">Chapter 26. Datamatrix (2D-Barcode)</th><td width="20%" align="right"> </td></tr></table><hr></div><div class="sect1" title="Creating barcodes"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2603445"></a>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="ch26s02.html#fig.datamatrix-encodation-principle" title="Figure 26.4. Datamatrix encodation principle">Figure 26.4. Datamatrix encodation principle</a></p>
|
|||
|
<div class="figure"><a name="fig.datamatrix-encodation-principle"></a><p class="title"><b>Figure 26.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" title="Getting started"><div class="titlepage"><div><div><h3 class="title"><a name="id2605827"></a>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 class="orderedlist" type="1"><li class="listitem">
|
|||
|
<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 class="listitem">
|
|||
|
<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 class="listitem">
|
|||
|
<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="ch26s02.html#fig.datamatrix_ex00" title="Figure 26.5. The simplest possible datamatrix script (datamatrix_ex00.php)">Figure 26.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> </a></p>
|
|||
|
<p>
|
|||
|
</p><div class="example"><a name="example.datamatrix_ex00"></a><p class="title"><b>Example 26.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-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 26.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="ch26s02.html#fig.datamatrix-error-image" title="Figure 26.6. Datamatrix error image">Figure 26.6. Datamatrix error image</a>. </p>
|
|||
|
<div class="figure"><a name="fig.datamatrix-error-image"></a><p class="title"><b>Figure 26.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 26.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-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 26.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 26.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-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 26.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" title="Error handling"><div class="titlepage"><div><div><h3 class="title"><a name="id2606128"></a>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="ch26s02.html#table.datamatrix-error-messages" title="Table 26.3. Datamatrix error messages">Table 26.3. Datamatrix error messages</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 26.3. Datamatrix error messages</b></p><div class="table-contents">
|
|||
|
|
|||
|
<table summary="Datamatrix error messages" border="1"><colgroup><col class="newCol1"><col class="c1"></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" title="Encodation options"><div class="titlepage"><div><div><h3 class="title"><a name="id2606133"></a>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="ch26.html#table.datamatrix-ecc200-size" title="Table 26.2. Maximum data capacity for the different symbol sizes in ECC-200 Data Matrix subset.">Table 26.2. Maximum data capacity for the different symbol sizes in ECC-200 Data
|
|||
|
Matrix subset.</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="ch26.html#table.datamatrix-ecc200-size" title="Table 26.2. Maximum data capacity for the different symbol sizes in ECC-200 Data Matrix subset.">Table 26.2. Maximum data capacity for the different symbol sizes in ECC-200 Data
|
|||
|
Matrix subset.</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="ch26.html#table.datamatrix-ecc200-size" title="Table 26.2. Maximum data capacity for the different symbol sizes in ECC-200 Data Matrix subset.">Table 26.2. Maximum data capacity for the different symbol sizes in ECC-200 Data
|
|||
|
Matrix subset.</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="ch26.html#sec.encodation-efficiency" title="Encodation efficiency"> Encodation efficiency</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 class="itemizedlist" type="disc"><li class="listitem">
|
|||
|
<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="ch26s02.html#table.datamatrix-symbikc-encoding" title="Table 26.4. Datamatrix encodation schemas">Table 26.4. Datamatrix encodation schemas</a></p>
|
|||
|
<div class="table"><a name="table.datamatrix-symbikc-encoding"></a><p class="title"><b>Table 26.4. Datamatrix encodation schemas</b></p><div class="table-contents">
|
|||
|
|
|||
|
<table summary="Datamatrix encodation schemas" border="1"><colgroup><col class="c1"><col class="c2"><col class="newCol3"></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" title="Processing special input characters"><div class="titlepage"><div><div><h3 class="title"><a name="id2606704"></a>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 class="itemizedlist" type="disc"><li class="listitem">
|
|||
|
<p><code class="code">Datamatrix::SetTilde($aFlg=true)</code></p>
|
|||
|
</li></ul></div><p>
|
|||
|
</p>
|
|||
|
<p><a class="xref" href="ch26s02.html#table.datamatrix-tilde-processing" title="Table 26.5. Tilde processing translating">Table 26.5. Tilde processing translating</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 26.5. Tilde processing translating</b></p><div class="table-contents">
|
|||
|
|
|||
|
<table summary="Tilde processing translating" border="1"><colgroup><col class="c1"><col class="c2"></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" title="Creating different backends"><div class="titlepage"><div><div><h3 class="title"><a name="id2607268"></a>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 class="itemizedlist" type="disc"><li class="listitem">
|
|||
|
<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 class="listitem">
|
|||
|
<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 class="listitem">
|
|||
|
<p><code class="code">BACKEND_EPS</code>, Create an encapsulated postscript
|
|||
|
backend</p>
|
|||
|
</li><li class="listitem">
|
|||
|
<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" title="Generic backend methods"><div class="titlepage"><div><div><h3 class="title"><a name="id2607359"></a>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 class="orderedlist" type="1"><li class="listitem">
|
|||
|
<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 class="listitem">
|
|||
|
<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 class="listitem">
|
|||
|
<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 class="listitem">
|
|||
|
<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" title="Image backend methods"><div class="titlepage"><div><div><h3 class="title"><a name="id2607382"></a>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 class="orderedlist" type="1"><li class="listitem">
|
|||
|
<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 class="itemizedlist" type="disc"><li class="listitem">
|
|||
|
<p><code class="code">'auto'</code></p>
|
|||
|
</li><li class="listitem">
|
|||
|
<p><code class="code">'png'</code></p>
|
|||
|
</li><li class="listitem">
|
|||
|
<p><code class="code">'jpeg'</code></p>
|
|||
|
</li><li class="listitem">
|
|||
|
<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" title="Postscript backend format options"><div class="titlepage"><div><div><h3 class="title"><a name="id2607457"></a>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 class="itemizedlist" type="disc"><li class="listitem">
|
|||
|
<p><code class="code">Backend::SetEPS($aFlg=true)</code></p>
|
|||
|
</li></ul></div><p>
|
|||
|
</p>
|
|||
|
</div>
|
|||
|
<div class="sect2" title="A template to create barcodes"><div class="titlepage"><div><div><h3 class="title"><a name="id2607560"></a>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" title="Sample application"><div class="titlepage"><div><div><h3 class="title"><a name="id2607586"></a>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="ch26s02.html#fig.datamatrix-demoapp" title="Figure 26.9. Datamatrix WEB-based demo application">Figure 26.9. Datamatrix WEB-based demo application</a> shows a screen shot of the
|
|||
|
application interface.</p>
|
|||
|
<div class="figure"><a name="fig.datamatrix-demoapp"></a><p class="title"><b>Figure 26.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"> </td><td width="20%" align="center"><a accesskey="u" href="ch26.html">Up</a></td><td width="40%" align="right"> </td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
|