| = Barcode DataFormat |
| :doctitle: Barcode |
| :shortname: barcode |
| :artifactid: camel-barcode |
| :description: Transform strings to various 1D/2D barcode bitmap formats and back. |
| :since: 2.14 |
| :supportlevel: Stable |
| :tabs-sync-option: |
| //Manually maintained attributes |
| :camel-spring-boot-name: barcode |
| |
| *Since Camel {since}* |
| |
| The Barcode data format is based on the |
| https://github.com/zxing/zxing[zxing library]. The goal of this |
| component is to create a barcode image from a String (marshal) and a |
| String from a barcode image (unmarshal). You're free to use all features |
| that zxing offers. |
| |
| == Dependencies |
| |
| To use the barcode data format in your camel routes, you need to add |
| a dependency on *camel-barcode* which implements this data format. |
| |
| If you use maven, you could just add the following to your pom.xml, |
| substituting the version number for the latest & greatest release (see |
| the download page for the latest versions). |
| |
| [source,java] |
| ---------------------------------------- |
| <dependency> |
| <groupId>org.apache.camel</groupId> |
| <artifactId>camel-barcode</artifactId> |
| <version>x.x.x</version> |
| </dependency> |
| ---------------------------------------- |
| |
| == Barcode Options |
| |
| // dataformat options: START |
| include::partial$dataformat-options.adoc[] |
| // dataformat options: END |
| |
| == Using the Java DSL |
| |
| First, you have to initialize the barcode data format class. |
| You can use the default constructor, or one of parameterized (see JavaDoc). |
| The default values are: |
| |
| [width="100%",cols="10%,90%",options="header",] |
| |======================================================================= |
| |Parameter |Default Value |
| |image type (BarcodeImageType) |PNG |
| |
| |width |100 px |
| |
| |height |100 px |
| |
| |encoding |UTF-8 |
| |
| |barcode format (BarcodeFormat) |QR-Code |
| |======================================================================= |
| |
| [source,java] |
| ------------------------------------------ |
| // QR-Code default |
| DataFormat code = new BarcodeDataFormat(); |
| ------------------------------------------ |
| |
| If you want to use zxing hints, you can use the 'addToHintMap' method of |
| your BarcodeDataFormat instance: |
| |
| [source,java] |
| ----------------------------------------------------------- |
| code.addToHintMap(DecodeHintType.TRY_HARDER, Boolean.true); |
| ----------------------------------------------------------- |
| |
| For possible hints, please consult the xzing documentation. |
| |
| === Marshalling |
| |
| [source,java] |
| ---------------------------- |
| from("direct://code") |
| .marshal(code) |
| .to("file://barcode_out"); |
| ---------------------------- |
| |
| You can call the route from a test class with: |
| |
| [source,java] |
| ------------------------------------------------------------- |
| template.sendBody("direct://code", "This is a testmessage!"); |
| ------------------------------------------------------------- |
| |
| You should find inside the 'barcode_out' folder this image: |
| |
| image::ROOT:qr-code.png[image] |
| |
| === Unmarshalling |
| |
| The unmarshaller is generic. |
| For unmarshalling, you can use any BarcodeDataFormat instance. |
| If you've two instances, one for (generating) QR-Code and one for PDF417, it doesn't matter which one will be used. |
| |
| [source,java] |
| -------------------------------------------------------------------- |
| from("file://barcode_in?noop=true") |
| .unmarshal(code) // for unmarshalling, the instance doesn't matter |
| .to("mock:out"); |
| -------------------------------------------------------------------- |
| |
| If you'll paste the QR-Code image above into the 'barcode_in' folder, |
| you should find _`This is a testmessage!`_ inside the mock. |
| You can find the barcode data format as header variable: |
| |
| [width="100%",cols="10%,10%,80%",options="header",] |
| |======================================================================= |
| |
| |Name |Type |Description |
| |
| |BarcodeFormat |String |Value of com.google.zxing.BarcodeFormat. |
| |======================================================================= |
| |
| If you'll paste the code 39 barcode that is rotated some degrees into the 'barcode_in' folder, |
| You can find the ORIENTATION as header variable: |
| |
| [width="100%",cols="10%,10%,80%",options="header",] |
| |======================================================================= |
| |
| |Name |Type |Description |
| |
| |ORIENTATION |Integer |rotate value in degrees . |
| |======================================================================= |
| |
| |
| |
| include::spring-boot:partial$starter.adoc[] |