我使用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();