我必须在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(); }
答案 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