如何读取Data Matrix条形码

时间:2014-09-30 11:35:57

标签: java itext barcode qr-code zxing

我必须在PDF文件中读取数据矩阵代码,我正在调查这些可能性,我对此有一些疑问:

1.-我使用Itext,我正在寻找有关使用此库读取此QR条码的可能性的信息,但我没有结果,是否可能?

2.-我发现了另一个图书馆ZXING:https://github.com/zxing/zxing,但我找不到阅读PDF内容的方法。

有人可以帮我解决这个问题吗?


带有新想法的新信息,用于解决问题:

这是我的代码,使用PDFBOX我找到每个页面的图像,之后我检查这个图像是否是用于获取数据的条形码,我不知道为什么但是我无法检测到使用此代码的条形码,条形码的质量在PDF中很高。

我尝试使用Reader实现,但我找不到它,我的版本是3.1 ZXING,也许是在另一个版本中?

如果我直接使用这样的文件中的图像,那就完美了:

  

Image image = ImageIO.read(new file(" C:\ Workarea \ testBarcode.png"));   BufferedImage buffered =(BufferedImage)image;

PDDocument document; try {
    document3 = PDDocument.load("TEST_QR_BARCODE.pdf");
    List pages = document.getDocumentCatalog().getAllPages();

    Iterator iter = pages.iterator();
    while( iter.hasNext() )
    {
        PDPage page = (PDPage)iter.next();
        PDResources resources = page.getResources();
        Map images;

            images = resources.getImages();

        if( images != null )
        {
            Iterator imageIter = images.keySet().iterator();
            while( imageIter.hasNext() )
            {
                String key = (String)imageIter.next();
                PDXObjectImage image = (PDXObjectImage)images.get( key );
                BufferedImage testcojones = image.getRGBImage();

                try {
                    LuminanceSource source;

                    source = new BufferedImageLuminanceSource(testcojones);

                    BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));

                    Result result = new MultiFormatReader().decode(bitmap);

                    ParsedResult parsedResult = ResultParser.parseResult(result);

                    System.out.println(" (format: " + result.getBarcodeFormat() + ", type: " +
                    parsedResult.getType() + "):\nRaw result:\n" + result.getText() + "\nParsed result:\n" +
                    parsedResult.getDisplayResult());
                    System.out.println("Found " + result.getResultPoints().length + " result points.");

                    for (int i = 0; i < result.getResultPoints().length; i++) {
                        ResultPoint rp = result.getResultPoints()[i];
                        if (rp != null) {
                            System.out.println(" Point " + i + ": (" + rp.getX() + ',' + rp.getY() + ')');
                        }
                    }

                    } catch (NotFoundException ignored) {
                        System.out.println("No barcode found!");
                    }

            }
        }
    } } catch (IOException e2) {
    // TODO Auto-generated catch block
    e2.printStackTrace(); }

1 个答案:

答案 0 :(得分:0)

要使用zxing,只需在PDF程序中在Java程序中创建BufferedImage即可。这是一个单独的问题,但应该可以使用另一个库。然后,您可以使用BufferedImageLuminanceSource,主要是您在此处看到的方式:https://github.com/zxing/zxing/blob/master/javase/src/main/java/com/google/zxing/client/j2se/DecodeWorker.java#L125