我使用iText 2.1.7库创建了pdf。 Pdf(barcodes.pdf)的条形码底部带有一些文本。此外,我将此条形码另存为图像(barcode.png),但是底部的文本丢失了。

如何创建在底部也包含文本的条形码图像?
ojit_pre

最佳答案

在您的代码中,您忘记了关闭文档。解决方案是使用普通的iText类not so easy。因此,我使用了barcode4j(要测试示例,您需要下载它并将其放在类路径中):

Code128Bean code128 = new Code128Bean();
code128.setHeight(15f);
code128.setModuleWidth(0.3);
code128.setQuietZone(10);
code128.doQuietZone(true);

ByteArrayOutputStream baos = new ByteArrayOutputStream();
BitmapCanvasProvider canvas = new BitmapCanvasProvider(baos, "image/x-png", 300, BufferedImage.TYPE_BYTE_BINARY, false, 0);
code128.generateBarcode(canvas, "1234567890");
canvas.finish();

//write to png file
FileOutputStream fos = new FileOutputStream("barcode.png");
fos.write(baos.toByteArray());
fos.flush();
fos.close();

//write to pdf
Image png = Image.getInstance(baos.toByteArray());
png.setAbsolutePosition(400, 685);
png.scalePercent(25);

Document document = new Document(new Rectangle(595, 842));
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("barcodes.pdf"));
document.open();
document.add(png);
document.close();

writer.close();

07-27 22:18