【超便利】タグ１つでwebのQRコード作成

バーコードとQRコードをたまたま作成しなければならない場面があります。javaの場合、よくbarcode4jとzxingを利用します。文字列をクラスに渡して画像を受取ります。Webの場合、さらにその画像をWeb画面に表示させるところまで必要です。基本的に「定型作業」ですから、自動化にしたら便利だと思い、１つのタグに纏めてみました。
# jar入手
```xml
<dependency>
    <groupId>io.github.efwgrp</groupId>
    <artifactId>efw</artifactId>
    <version>4.07.029</version>
</dependency>
```
```xml
<dependency>
    <groupId>net.sf.barcode4j</groupId>
    <artifactId>barcode4j</artifactId>
    <version>2.1</version>
</dependency>
```
```xml
<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>core</artifactId>
    <version>3.5.3</version>
</dependency>
```
```xml
<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>javase</artifactId>
    <version>3.5.3</version>
</dependency>
```
# jspの書き方
imgタグのurlをdrawServletにして、typeとmsgを指定して画像を受取ります。厳密にいえばカスタマイズタグではなく、servletですね。
```javascript
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="efw" uri="efw" %>
<!DOCTYPE HTML>
<HTML>
<HEAD>
	<title>barcode テスト</title>
	<efw:Client lang="jp"/>
	<style>img{vertical-align:middle}</style>
	
</HEAD>
<BODY>
qrcode　<img src="drawServlet?type=qrcode&msg=hellword" height="150px">　
codabar　<img src="drawServlet?type=codabar&msg=0123456789" height="60px">　
code39　<img src="drawServlet?type=code39&msg=0123456789" height="60px">　
code128　<img src="drawServlet?type=code128&msg=0123456789" height="60px">　
2of5　<img src="drawServlet?type=2of5&msg=0123456789" height="60px">　
itf14　<img src="drawServlet?type=itf14&msg=01234567891231" height="60px">　
ean13　<img src="drawServlet?type=ean13&msg=1234567890128" height="60px">　
ean8　<img src="drawServlet?type=ean8&msg=12345670" height="60px">　
upca　<img src="drawServlet?type=upca&msg=012345678905" height="60px">　
upce　<img src="drawServlet?type=upce&msg=01234565" height="60px">　
rmcbc　<img src="drawServlet?type=rmcbc&msg=0123456789" height="60px">　
postnet　<img src="drawServlet?type=postnet&msg=0123456789" height="60px">　
usps4cb　<img src="drawServlet?type=usps4cb&msg=0123456709498765432101234567891" height="60px">　
pdf417　<img src="drawServlet?type=pdf417&msg=0123456789" height="60px">　
datamatrix　<img src="drawServlet?type=datamatrix&msg=0123456789" height="150px">　
</BODY>
</HTML>
```
# 実行の結果
作成したものは以下です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/6248248a-c378-18fb-4d0a-275316c0f12b.png)

さまざまなコードがあり、QRコードだけが数字・英字・漢字・記号のパラメータを受け入れます。これでURLを表現でき、用途は幅広く展開されています。

# 添付、コード種類説明
<table>
<tr><th>種類</th><th>説明</th></tr>
<tr><td>qrcode</td><td>QR（Quick Response）コードは、1994年デンソーウェーブ（日本）によって開発されたマトリクス型の二次元コードです。非常に速い読取り速度、大容量のデータの収納が可能、といった特徴があります。また、日本で開発されたコードのため、漢字などの表現も効率よく行うことができます。そのため、日本はもちろん、日本以外の漢字を使用する国・地域（中国、韓国、台湾、香港など）でも広く利用されています。
</td></tr>
<tr><td>codabar</td><td>NW-7は、モナークマーキング社（アメリカ）が1972年に開発した比較的初期のバーコードです。日本では主にNW-7と呼ばれていますが、CODABAR、Code 2 of 7と呼ばれることもあります。NW-7では一つのキャラクタを表すのに、Narrow（狭い）とWide（広い）幅の、7本のバーとスペースを用いており、その特徴が名称の由来になっています。比較的単純な構成のバイナリレベルのバーコードのため、高精度の印刷は要求されません。
</td></tr>
<tr><td>code39</td><td>Code39は、インターメック社（アメリカ）が1975年に開発したバーコードです。Code39は一つのキャラクタを表すのに、9本のバー及びスペース(うち3本が太いエレメント)を用いており、その特徴が名称の由来になっています。比較的単純な構成のバイナリレベルのバーコードのため、高精度の印刷は要求されません。</td></tr>
<tr><td>code128</td><td>Code128は、コンピュータ アイデンティクス社（アメリカ）が、1981年に開発したバーコードです。パソコンの入力に対応するため、アスキーコードの128キャラクタを表現でき、その128が名称の由来になっています。情報密度が高く信頼性も高いため、Code39に代わって工業分野でも広く採用されています。</td></tr>
<tr><td>2of5</td><td>Code 2 of 5（Industrial 2 of 5）は、アイデンティコン社（アメリカ）とコンピュータ・アイデンティクス社（アメリカ）が1970年に開発した、現在も使用されているバーコードの中では最も古いバーコードです。1キャラクタを表すのに5本のバー（うち2本が太バー）を使用するため、この名称になりました。もともとは工業用に使用されていましたが、情報密度が低くアルファベットを表現できないため、現在は工業分野ではほとんど使用されていません。構成が非常に単純なため、Code 2 of 5から様々なバーコードが開発されました。</td></tr>
<tr><td>itf14</td><td>ITFは、インターメック社（アメリカ）が1972年に開発したバーコードです。従来のバーコードがバーのみでキャラクタを表していたのに対し、ITFはスペースでもキャラクタを表現できるので、情報密度が高く、1981年アメリカで梱包配達の標準シンボルとして採用されました。ITFは、①バーの間にあるスペースにもデータを収納している（Interleaved：～と～の間に）、②一つのキャラクタを表すのに、5本のバーもしくはスペース(うち2本が太いエレメント)を用いている、といった特徴があり、その特徴が名称の由来になっています。</td></tr>
<tr><td>ean13</td><td>EAN-13 は、ヨーロッパで一般に広く認識されているバーコードで、スーパーマーケットや基本的な製品認識方法を採用している小売り店で使用されています。米国の UPC-A バーコードのヨーロッパ版に相当します。EAN は European Article Number (欧州統一商品番号) の頭文字で、このコードは厳密には International Article Number (国際統一商品番号)であり、ヨーロッパの外でも使用されています。</td></tr>
<tr><td>ean8</td><td>EAN-8 バーコードは、EAN-13 バーコードの短縮版で、ヨーロッパおよびその他の国で標準的な小売り製品の識別子として使われてます。EAN は European Article Number (欧州統一商品番号) の頭文字ですが、International Article Number (国際統一商品番号)に名前を変更されています。しかし、「EAN」は今でも使われています。EAN-8 (8桁) は小さなパッケージに使われますが、EAN-13 コード (13桁) は使われません。</td></tr>
<tr><td>upca</td><td>UPC-A バーコードは、米国で最も一般的に使われているタイプのバーコードで、最も幅広く認識されています。主に小売りや食料品店で使われています。UPC-A は、Uniform Grocery Product Code Council が IBM と協力して開発され、1974 年以降使われています。最初にスキャンされた UPC バーコードは、Wrigley のジューシーフルーツガムでした。そのパッケージは、スミソニアンに展示されています。</td></tr>
<tr><td>upce</td><td>UPC-E バーコードは統一商品コードで、米国で最も幅広く使用されているバーコードです。UPC-E は、標準サイズの UPC-A 数値バーコードの短縮版で、食料品店など、国内全般に広がる小売店で使用されています。短縮版は、パッケージが小さくてフルサイズの UPC-A コードを配置するスペースがない小型製品に使用されます。</td></tr>
<tr><td>rmcbc</td><td><font color=red> RM4SCC は正しい略称かもしれません。</font>Royal Mail 4 State Customer Code（通称：RM4SCC）は、イギリスのRoyal Mail社が開発した二次元バーコードです。イギリスのロイヤルメール社が開発した二次元バーコードで、英国内の手紙や小包の郵便番号を示すのに使用されています。このシステムは、他の国でも使用されていますが、そのバリエーションの一つです。印刷されたコードは、高速で読めるように最適化されています。
</td></tr>
<tr><td>postnet</td><td>POSTNET は、Postal Numeric Encoding Technique の略で、配送先の ZIP コード（郵便番号）を使って配達する郵便物の仕分けに使われます。特定の封筒への印字として見たことがあるはずです。小売りやそのほかのデータ保管用のバーコードとは非常に異なるタイプのバーコードです。高さが比較的短いものの、従来よりは一般的に長さが長くなっています。</td></tr>
<tr><td>usps4cb</td><td>Intelligent Mailバーコードは、USPS OneCodeソリューションまたはUSPS 4州顧客バーコード（4CB、またはUSPS4CB）とも呼ばれます。 インテリジェントメールバーコードは65バーで構成されています。
Intelligent MailバーコードまたはOneCodeは、郵便番号と追跡情報の両方を組み合わせ、メーラーと郵便局の両方にメリットをもたらします。 インテリジェントメールバーコードまたはOneCodeはPOSTNETおよびPLANETバーコードを置き換えます。</td></tr>
<tr><td>pdf417</td><td>PDF417は、1989年にシンボルテクノロジー社(アメリカ/現:モトローラ社)によって開発された二次元コードです。PDF417という名称は、「①ポータブルデータベースファイル(Portable Data File)の頭文字」と、「②基本単位（コードワード）が、4つのバー及び4つのスペースの17モジュールで構成されている」ことに由来しています。PDF417は、スタック型の二次元コードのため低価格のレーザスキャナでも読み取れること、縦横のデザインが容易に変更できること、優れたエラー訂正機能を持っていることなどから、多方面から高く評価・採用されました。とくに、国際標準物流ラベル(ISO 15394/JIS X 0515)において、EDIデータの標準シンボルとして採用されています。</td></tr>
<tr><td>datamatrix</td><td>DataMatrixは、1987年にアイディマトリックス社(アメリカ)によって開発されたマトリクス型の二次元コードです。日本ではデータコード(DataCode)と呼ばれることもあります。DataMatrixには、ECC000～140の古いバージョンと、ECC200という比較的新しいバージョンがあります。ECC000～140は、歪みに弱く対応しているリーダが少ない、といった欠点があるため、現在はほとんど利用されていません。一方、ECC200は、大容量のデータを収納でき、読み取り性能も高く、現在でも広く利用されています。そのため、DataMatrixについて特に断りのない場合、当ウェブサイトではECC200について記述しております。</td></tr>
</table>

今回のサンプルは以下のリンクかダウンロードできます。

https://github.com/efwGrp/qittaSamples


# ※参考
https://aimjal.co.jp/gijutu/2jigen/qrcode/qrcode.html

https://www.cognex.com/ja-jp/resources/symbologies/1-d-linear-barcodes

https://www.barcodesoft.com/ja/

https://ja.alegsaonline.com/art/83194

[【超便利】タグ１つでwebのファイル管理](https://qiita.com/changkejun/items/d79127e27b49bfc8a847)
[【超便利】タグ１つでwebのチャート機能](https://qiita.com/changkejun/items/b563570df2036f5fa7da)
[【超便利】タグ１つでwebのQRコード作成](https://qiita.com/changkejun/items/106f2734dd319e9b1201)