我想创建一个包含条形码图像的pdf文件,文本在表格中。我无法以这种格式创建。
PdfPTable table = new PdfPTable(qrCodeModelArrayList.size());
for (int i = 0; i < qrCodeModelArrayList.size(); i++) {
Bitmap bitmap = qrCodeModelArrayList.get(i).getQrBitMap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); //use the compression format of your need
InputStream is = new ByteArrayInputStream(stream.toByteArray());
Bitmap bmp = BitmapFactory.decodeStream(is);
ByteArrayOutputStream stream1 = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream1);
Image bitmapImage = null;
try {
bitmapImage = Image.getInstance(stream1.toByteArray());
} catch (IOException e) {
e.printStackTrace();
}
PdfPCell cell = new PdfPCell();
cell.addElement(bitmapImage);
Paragraph p = new Paragraph(qrCodeModelArrayList.get(i).getQrCodeName());
p.setAlignment(Element.ALIGN_CENTER);
cell.addElement(p);
table.addCell(cell);
}
使用此代码时,我确实输出如下:
我无法查看条形码图像,并且所有列都在同一行中添加。我希望它在5列中。
答案 0 :(得分:1)
我已更新您的问题,以便显示实际问题:您正在尝试创建QRCode,应使用BarcodeQRCode
类完成。然后,您应该使用placeBarcode()
方法将代码添加到PDF。您无法使用createAwtImage()
方法,因为Android上没有AWT。我认为您当前使用的代码存在一些与图像相关的问题。 QRCode由矢量数据组成,您将其转换为有损JPEG格式(这是一个坏主意,因为条形码扫描器在阅读JPG时会遇到问题,您应该使用PNG代替)。你也在压缩条形码;这对于可能是矢量格式的图像没有意义。
使用placeBarcode()
方法将QRCode添加为矢量图像(使用PDF语法)。这比将条形码添加为光栅图像要好得多。