iText5 在 Java 呈现的 PDF 文档的顶部 right-hand 侧的 header 放置生成的不同大小的 QR 码

iText5 placing a generated QR Code of varying sizes in the header at top right-hand side of a Java rendered PDF document

我有一个遗留 Java 程序,它使用 iText 5 创建 PDF 发票文档 (PageSize.LETTER)。“文档”的“PdfWriter”上的“setPageEvent”创建了一个 header 在文件上。 “onEndPage”事件方法创建一个“PdfTable”,其中包含五列不同宽度的列(即 PdfPcell)。

目前,该方法的第一个操作是在所有五列中创建一个带有横幅图像的单元格 (cell.setColspan(5))。

我的挑战是,在某些文档上,需要将生成的 QR 码放置在页面右上角横幅图像的右侧。

我看了很多帖子,尝试了不同的方法,让横幅图像跨越四列,并将二维码图像添加到第五个单元格。由于 QR 码中包含的数据量,代码要么超出页面顶部,要么当我缩放图像 (image.scalePercent) 时,QR 码 reader 无法读取代码.

目前,我已放弃使用“单元格”方法,尝试以某种方式使用图像的绝对定位或固定定位将其放置在横幅图像旁边的 right-hand 上角.关于如何利用无数的“文档”、“单元格”和“图像”class 方法来实现直接放置在横幅图像右侧的 QR 码的预期结果的困惑仍然存在。

二维码是使用“zxing”包生成的。 “qrCodewriter.encode”方法的长宽对二维码的大小没有影响,格式为“JPG”或“PNG”。在“MatrixToImageWriter.writeToStream”方法调用中。

任何有关后续方向的帮助将不胜感激。

我通过在二维码图像上使用“setAbsolutePosition”方法实现了一个解决方案,并使用偏移量将图像定位在右上角,从顶部向下到右侧的左侧文件的。

qrImage.setAbsolutePosition(PageSize.LETTER.getWidth() - (qrImage.getScaledHeight() + 20),
                         PageSize.LETTER.getHeight() - (qrImage.getScaledWidth() + 20));

document.add(qrImage);