java - iText 5 定义关于矩形的正确位置
问题描述
我已经用 JasperSoft Studio 完成了一份报告。
在这份报告中,我添加了一个占位符(一个图像),带有一个键。
在 Java 中,我完成了这段代码来检索有关占位符的信息:
HashMap<String, InfoImmaginePerFirma> hmSign = new HashMap<String, InfoImmaginePerFirma>();
for (int currPage = 0; currPage < populatedReport.getPages().size(); currPage++) {
for (JRPrintElement currElement : populatedReport.getPages().get(currPage).getElements()) {
if (currElement.getKey() != null && currElement.getKey().equals("DMIMySignatureImg")) {
InfoImmaginePerFirma currInfo = new InfoImmaginePerFirma(currElement.getX(), currElement.getY(), currElement.getWidth(), currElement.getHeight(), currPage);
hmSign.put("DMIMySignatureImg", currInfo);
}
}
}
在我的 hmSign Hashmap 中,我为占位符添加了 X、Y、高度和宽度。
因此,在其他说明之后,我添加了此代码以在占位符上添加一个矩形,如下所示:
InfoImmaginePerFirma info = hmSign.get("DMIMySignatureImg");
float llx = info.getX();
float lly = info.getY() + (info.getHeight() + 62);
float urx = info.getX() + info.getWidth();
float ury = info.getY() + 62;
PdfFormField sig = PdfFormField.createSignature(stamper.getWriter());
sig.setWidget(new Rectangle(llx, lly, urx, ury), null);
sig.setFlags(PdfAnnotation.FLAGS_PRINT);
sig.put(PdfName.DA, new PdfString("/Helv 0 Tf 0 g"));
sig.setFieldName("Signature1");
等等...
我添加了 62,因为我的报告中有两个波段(标题和详细信息),而我的占位符在第二个波段中。
但是当我尝试打印我的报告时,矩形比 y 高。
所以,我已经阅读了这些信息:
检索到 x,y 是我图像的左上角
要绘制一个矩形,我需要知道左下角和右上角,所以我检索了我的角如下:
float llx = X of upper left corner (the X is the same)
float lly = Y of upper left corner + height
float urx = X of upper left corner + width
float ury = Y of upper left corner
但是,如果我尝试手动管理这些位置,我注意到关于 lly 的正确 Y 位置是
float lly = Y of upper left corner - 362
但我不明白这是可能的。
解决方案
推荐阅读
- vue.js - Jest spyOn vs mock - 已定义和未定义的错误
- select - 合并后 DomainClass.getAll() 无法正常工作
- php - PHP 仅首先记录到 Windows 事件日志;需要 iisreset 才能记录更多事件
- c# - 删除验证消息名称中的集合索引
- mysql - 识别 MySQL“完整性约束违规”(1022)消息中的错误外键
- python - 有没有办法让 Pytorch 元素明智的平等将每个维度视为一个元素?
- server - 如何设置 virtualbox 以连接到外部互联网和 localhost.mysite.com 服务器?
- xml - 如何在本地机器上使用在远程机器上设置的变量
- powershell - 整数在 foreach 循环中递增 2 次
- angular - 示例使用 ng serve 的 broswerTarget 选项?