天天看點

Jaspersfot Studio Create Check OCR Font

最近一個需求是建立電子收據的Barcode和OCR。關于建立OCR字元的文章在國内很少出現,大部分内容都是關于列印機出錯,需導入ocr.ttf字型。但是目前我面臨的問題是顯示ocr.ttf字型在pdf上,是以這裡總結最近實作這個功能的過程。

一、OCR擴充

1.1 前言

OCR技術是光學字元識别的縮寫(Optical Character Recognition),是通過掃描等光學輸入方式将各種票據、報刊、書籍、文稿及其它印刷品的文字轉化為圖像資訊,再利用文字識别技術将圖像資訊轉化為可以使用的計算機輸入技術。“OCR”位代表“光學字元識别”。“A”是字母表中的第一個字母;這告訴您,奧爾- a是第一個為OCR目的定制開發的字型。(oc - b是第二個!)

光學字元識别與磁讀非常不同!圖像掃描器(或檢查閱讀器)捕捉紙質文檔的圖像(或檢查)——我們稱之為“掃描”。在這一點上,被掃描的圖像隻不過是一個無意義的密集點雲在一個更輕的背景上。OCR軟體從圖像中“提取”文本,識别形狀并配置設定字元。是以,紙質文檔無需重新輸入就可以轉換成計算機資料! OCR-a程式字型是根據ANSI INCITS 17-1981 (R2002)(前身為ANSI X3.17-1981 (R2000))建立的。USPS相容性是通過使用9pt IDAutomationOCRa字型實作。歐元銀行和德國的銀行支票可以用歐元-a程式字型列印,這種字型包括用于列印歐洲銀行支票的椅子、叉、鈎和歐元等特殊符号。大小為1的IDAutomationOCRa字型(支票schriften)應該用于列印德國銀行支票。

下表列出了這些獨特字元的位置:

Jaspersfot Studio Create Check OCR Font
Jaspersfot Studio Create Check OCR Font
Jaspersfot Studio Create Check OCR Font

1.2 安裝及導出OCR字型

1.2.1 Windows安裝OCR

下載下傳網址:https://www.wfonts.com/font/ocr-a

Jaspersfot Studio Create Check OCR Font

下載下傳完後拖住OCRAExtended.ttf檔案到C:\Windows\Fonts,會自動安裝。

點選"查找字元",找到需要的字型Unicode碼,Unicode碼可直接于Jaspersoft中使用。

Jaspersfot Studio Create Check OCR Font

1.2.2 Jaspersoft安裝OCR

OCR字型依賴于ttf檔案,考慮到java代碼開發,需生成一個jar包導入lib中建立依賴包。

Jaspersfot Studio Create Check OCR Font

①選擇Window-》Preperences

Jaspersfot Studio Create Check OCR Font

②導入ttf檔案

Jaspersfot Studio Create Check OCR Font

③點選Export導出為jar檔案

Jaspersfot Studio Create Check OCR Font

④Java項目導入OCRAExtended.jar

Jaspersfot Studio Create Check OCR Font

⑤添加OCRAExtended.jar到Build Path中

右鍵jar包-》Build Path-》Add to Build Path

Jaspersfot Studio Create Check OCR Font

⑥導入barcode開發包

Jaspersfot Studio Create Check OCR Font

1.3 JasperSoft引用OCR字型

“222B"代表的是unicode碼,如果要想顯示字元,需在前面加上”\u",即"\u222B"。

Jaspersfot Studio Create Check OCR Font
Jaspersfot Studio Create Check OCR Font

Font需指定OCRAExtended字型。

Jaspersfot Studio Create Check OCR Font

二、Jaspersoft Studio 開發

2.1 前言

JasperReport是一個強大、靈活的報表生成工具,能夠展示豐富的頁面内容,并将之轉換成PDF,HTML,或者XML格式。該庫完全由Java寫成,可以用于在各種Java應用程式,包括J2EE,Web應用程式中生成動态内容。JasperReport是開源的,對于開發者來說是個不錯的選擇。

2.2 安裝Jaspersoft studio

下載下傳 Library Jar包和模闆設計器Jaspersoft studio。并安裝Jaspersoft studio。

官網位址下載下傳:https://community.jaspersoft.com/community-download

Jaspersfot Studio Create Check OCR Font

選擇電腦安裝所需版本:

Jaspersfot Studio Create Check OCR Font

2.3 Jaspersoft 介紹

2.3.1 介紹

1)它可以PDF,HTML,XML等多種形式産生報表或動态報表,在新版本還支援CSV,XLS,RTF等格式的報表;

2)它按預定義的XML文檔來組織資料,來源多(如:關系資料庫,Java容器對象(collection,arrays)等);

報表的填充過程:

先産生報表設計對象->序列化該對象->存儲在磁盤或網絡->産生XML檔案(表格資料)。

表單的設計過程就是用定義于XML檔案中的Java表達式來實作報表的設計。

3)它帶資料一緻性驗證;

4)報表引擎必須先接受資料(通過參數等多種形式)來産生報表,更多的是來自資料源,引擎直接接收用于填充表格的資料源對象,或者通過自身提供的JDBC連接配接對象來處理資料庫的資料;

5)報表最終要産生一個新的對象來進行填充操作,進而産生列印文檔對象,這也是存儲在磁盤或網絡傳輸媒體的序列化對象;

6)内置浏覽器能直接檢視結果,以PDF,HTML,XML導出;

7)重要的類:

net.sf.jasperreports.engine.design.JasperDesign

其執行個體是用于報表産生的原始類;

net.sf.jasperreports.engine.design.JasperReport

表現了報表設計對象,是作為報表的編譯過程的結果而被執行個體化,是向報表中填充資料的準備。

2.3.2 結構

JasperReports用XML檔案來定義,約定用jrxml作為檔案的字尾名。

1)主要元素:

根元素

報表的标題 頁眉 正文 頁腳 定義報表部件,以上所有元素都包含一個band元素作為其唯一子元素。 除了根元素,其餘元素是可選的。 2)以JasperReports6.1.0版本為例,一個JasperReports項目需要如下jar包: 包名 說明 jasperreports-6.1.0.jar JasperReports API Jasperreports-fonts-6.1.0.jar JasperReports Fonts API commons-beanutils-1.9.2.jar JavaBeans Utility classes commons-collections-3.2.1.jar Collections framework extension classes commons-digester-1.7.jar classes for processing XML documents commons-logging-1.2.jar Logging classes poi-2.0-final-20040126.jar Jarkarta POI API to generate an Excel Document

2.3.3 報表

1)報表檔案格式

設計模闆時可以以HTML,PDF,XML方式預覽,用它生成的檔案有.jrxml和.jasper兩種檔案。

.jrxml:是可視化編輯的xml檔案;

.jasper:經編譯後生成的類檔案,即報表模闆檔案。

2)報表的輸出格式

其預覽輸出格式有:PDF,HTML,CSV。JAVA2D,EXCEL,純文字,JRView。

注意:JRViewer是直接以C/S方式作為報表的輸出格式,在JFrame架構下輸出。

3)報表的動态對象變量、參數、字段

字段Fields:是從資料庫抽取出來的,在報表中出現的資料庫内容。$F

參數Parameters:你寫的應用需要提供給報表的入口。 $P

變量Variables:報表中一些邏輯運算的表現。 $V

每個對象的定義格式如下: $V{variablesName}

4)運作時需要.jasper檔案;編譯:把.jrxml->.jasper檔案。

靜态運作:靜态文本來運作,和資料源無關;

動态運作:帶資料源運作。

5)報表的結構

title、pageHeader、columnHeader、detail、columnFooter、pageFooter、summary、groupHeader、groupfooter。

6)在Jaspersoft中建立資料庫連接配接

(1)菜單DourceSource -> Connections/DataSources -> …new ->

(2)菜單Build -> Set active connection -> 選擇 -> … -> OK

2.4 Jaspersoft使用

2.4.1 建立jrxml檔案

①選擇File-》New-》Jasper Report

Jaspersfot Studio Create Check OCR Font

②選擇Blank A4

Jaspersfot Studio Create Check OCR Font

③選擇儲存的路徑并重命名,一直點選下一步即可。

Jaspersfot Studio Create Check OCR Font

④進入到資料源頁面

Jaspersfot Studio Create Check OCR Font

資料源是填充報表的關鍵,我們必須制定一個資料擴充卡(Data Adapter),此時我們有三種選擇:

選擇“OneEmpty Record - Empty rows”,這樣我們就可以專注于報表的設計,而暫時不指定資料源,建立完報表之後,我們随時可以制定别的資料源。

選擇“SampleDB - Database JBDC Connection”,這是Jaspersoft Studio安裝時提供的一個示例資料庫。

Jaspersfot Studio Create Check OCR Font

這是Eclipse工作區經典的布局視圖,中間部分是報表設計視圖,右側的調色闆(Palette)包含了一些報表元素,我們可以友善地把它們拖拽到設計視圖中的報表模闆上,然後根據需要調整元素的大小、位置和配置資訊等。本例中我們将添加一個3D餅狀圖,這是一個Chart元素,具體方法将在下文介紹。

左下角的大綱(Outline)視圖包含了目前編輯的報表的所有基礎資訊,包括一些固定區域的樣式(Style)、報表參數(Parameters)、字段(Fields)等,我們可以友善地檢視和修改。大綱視圖中還包括報表的一些固定面闆的直接連結,比如标頭(Title)面闆,細節(Detail)面闆等。點選一個面闆的連結之後,我們可以在右側的屬性視圖(Properties)中檢視和修改該面闆對應的一些基本屬性,如高度、布局。

注意:從大綱視圖中我們發現,一個報表包含很多固定的面闆。在每一個報表中标題和彙總(summary)面闆隻列印一次,頁眉(header)和頁腳(footer)在報表的每一頁都會獨立列印。我們可以直接在field中新增、删除字段,還可以将字段拖拽到報表的細節面闆中,Jasper Studio将會為我們建立一個文本字段(text field)元素,并設定其值為對應字段的資料。文本字段不應出現在除細節面闆之外的其它地方。

下面,我們可以預覽報表了。在JasperSoftStudio5.2中,我們切換到預覽(Preview)視圖(點選報表設計視圖左下角的“Preview“标簽),即可編譯、生成、并在報表設計視圖展示報表。至此,一個簡單的報表就展示在我們面前了。

2.4.2 編輯jrxml檔案

建立完jrxml檔案後,使用JasperSoft Studio進入編輯階段。首先需了解示例模闆,了解整體的構圖,才能進行編輯。這裡我複制了先有的jrxml進行修改,也可以自己進行添加。

2.4.2.1 插入Barcode

①從Basic Elements中選擇 Barcode

Jaspersfot Studio Create Check OCR Font

②拖住 Barcode element放入Detail闆塊

選擇Barbecue types的Code39類型

Jaspersfot Studio Create Check OCR Font

③在Barcode 中設定Code Expression

Jaspersfot Studio Create Check OCR Font

注意:$F表示的是Filed,這裡需要Java代碼相比對才可以。

④引用OCR字型

Jaspersfot Studio Create Check OCR Font

選擇“Text Field”中的Font,字型設定為之前本地安裝的OCRAExtended字型。

Jaspersfot Studio Create Check OCR Font

⑤最終效果

Jaspersfot Studio Create Check OCR Font

三、總結

此次開發用到的技術及工具有:Java,Jaspersoft Studio、SQL Developer、FontForge、OCR。

Java代碼部分引用的jar包有:barbecue-1.5-beta1.jar,commons-collections4-4.3.jar、jasperreports-6.8.0.jar、jasperreports、fonts-6.8.0.jar、OCRAExtended.jar。Jaspersoft Studio主要用于繪制PDF模闆及編譯jrxml檔案并配合Java代碼進行動态資料的填充。SQL Developer是連接配接Oracle資料庫的主要工具,用于編輯資料表及插入資料。FontForge用于修改ttf字型,比如說字元的寬度及大小。測試的過程中,發現一個char字元多了空白符。使用FontForge軟體進行檢視,發現是字元間距的問題。另外,OCR字型是最重要的組成部分,沒有它整個需求則不能完成。該需求總花費時長差不多一個月。前期花費了一些時間琢磨JasperSoft軟體,中期反複修改使用者要求的列印模闆,後期主要探索Java代碼與jrxml的結合以及OCR字型展示不出的問題。經過反複搜尋OCR的相關資訊及測試的過程,事實證明一定要冷靜思考,實事求是,因為問題會在不經意間就解決了。