You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iText 8.0.4 Data Matrix条码自动编码大小写翻转问题反馈

iText 8.0.4 Data Matrix AUTO编码模式字符大小写翻转异常

问题概述

使用iText 8.0.4生成Data Matrix条码时,采用AUTO编码模式会出现部分字符大小写翻转(大写转小写、小写转大写)的异常;强制指定ASCII编码则无此问题。

扫描结果对比

  • 正确扫描结果(强制ASCII编码):

    1nPUrEG_8vbghysdOMTV_FpO67pLVFuhq0nizXJ-Nfzyz4VxR0cLz9581IeQL5LTT0QpVcaaUJI=

  • 错误扫描结果(AUTO编码模式):

    1nPUrEG_8vbghysdOMTV_FpO67pLVFuhq0nizXJ-Nfzyz4VxR0clZ9581iEql5ltt0qpVcaaUJI=

复现代码

package com.vic.barcodetest;

import com.itextpdf.barcodes.BarcodeDataMatrix;
import static com.itextpdf.barcodes.BarcodeDataMatrix.DM_ASCII;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Image;
import com.itextpdf.layout.element.Paragraph;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;

public class BarcodeTest {

    public static void main(String[] args) {
        try {
            File testFile = File.createTempFile("test", ".pdf");
            PdfDocument testPdf = new PdfDocument(new PdfWriter(testFile));
            Document testDoc = new Document(testPdf, PageSize.LETTER);
            
            final String barcodeData = "1nPUrEG_8vbghysdOMTV_FpO67pLVFuhq0nizXJ-Nfzyz4VxR0cLz9581IeQL5LTT0QpVcaaUJI=";
            
            BarcodeDataMatrix bdm1 = new BarcodeDataMatrix();
            bdm1.setOptions(DM_ASCII);
            bdm1.setCode(barcodeData);
            Image i1 = new Image(bdm1.createFormXObject(testPdf));
            i1.scale(5.0F, 5.0F);
            testDoc.add(i1);
            testDoc.add(new Paragraph("Correct"));
            
            BarcodeDataMatrix bdm2 = new BarcodeDataMatrix();
            bdm2.setCode(barcodeData);
            Image i2 = new Image(bdm2.createFormXObject(testPdf));
            i2.scale(5.0F, 5.0F);
            testDoc.add(i2);
            testDoc.add(new Paragraph("Incorrect"));
            
            testDoc.add(new Paragraph(barcodeData));
            
            testDoc.close();
            testPdf.close();
            System.out.println("Wrote " + testFile.getAbsolutePath());
        } catch(FileNotFoundException e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        } catch(IOException e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
    }
}

临时解决方案

通过强制指定ASCII编码(bdm.setOptions(DM_ASCII))可规避该问题。

诉求

尚未深入排查问题根源,希望官方能对该问题进行调查并修复。


内容的提问来源于stack exchange,提问作者user25413158

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 21:25:20