加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – iText datamatrix生成问题

发布时间:2020-12-15 04:50:46 所属栏目:Java 来源:网络整理
导读:我试图从itext内生成datamatrix条形码.这适用于我的大多数代码,但不适用于某些代码.一个例子是: HEnSh0701003-2V1 由于某种原因,这会产生非方形条形码.当我使用其他公司的编码器(例如IDAutomation)时,我会得到一个有效的方形条形码. 有谁知道为什么会这样?
我试图从itext内生成datamatrix条形码.这适用于我的大多数代码,但不适用于某些代码.一个例子是:

HEnSh0701003-2V1

由于某种原因,这会产生非方形条形码.当我使用其他公司的编码器(例如IDAutomation)时,我会得到一个有效的方形条形码.

有谁知道为什么会这样?我正在寻找一个解决方案,所以我可以使用嵌入式iTest DataMatrix类,而不必使用第三方类.

我正在使用的代码示例:

BarcodeDatamatrix bar = new BarcodeDatamatrix();
 bar.setOptions(BarcodeDatamatrix.DM_AUTO);
bar.generate("HEnSh0701003-2V1");
bcd.addCell(bar.createImage());

其中bcd是具有2列的PdfTable.

解决方法

我遇到了这个问题.我最后深入研究iText源代码来解决这个问题. iText正在调整条形码的大小以适合您提供的文本.

iText支持datamatrix条形码的以下大小:
10×10,12×12,8×18,14×14,8×32,16×16,12×26,18×18,20×20,12×36,22×22,16×36,24×24,26×26,16×48,32×32,36×36,40×40,44×44,48×48,52×52,64×64,72×72,80×80,88×88,96×96,104×104,120×120,132×132,144×144

如您所见,那里有许多非方形尺寸.我所做的是创建一个方形条码大小列表,然后在检查generate()调用的返回值时尝试每个大小.

// supported square barcode dimensions
int[] barcodeDimensions = {10,12,14,16,18,20,22,24,26,32,36,40,44,48,52,64,72,80,88,96,104,120,132,144};

BarcodeDatamatrix barcode = new BarcodeDatamatrix();
barcode.setOptions(BarcodeDatamatrix.DM_AUTO);

// try to generate the barcode,resizing as needed.
for (int generateCount = 0; generateCount < barcodeDimensions.length; generateCount++) {
    barcode.setWidth(barcodeDimensions[generateCount]);
    barcode.setHeight(barcodeDimensions[generateCount]);
    int returnResult = barcode.generate(text);
    if (returnResult == BarcodeDatamatrix.DM_NO_ERROR) {
        return barcode.createImage();
    }
}

throw new Exception("Error generating barcode.");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读