java绝对位置与itext7
我在itext7中添加一个绝对位置相对于页面大小的图像时遇到问题
在itext5中,我使用下面的代码来确定图像相对于要添加它的页面的位置
for (int i = 0; i < numberOfPages;) {
page = copy.getImportedPage(reader, ++i);
if(page.getBoundingBox().getWidth() != 595.00f) {
img.setAbsolutePosition(page.getBoundingBox().getWidth() - (595-img.getAbsoluteX()),img.getAbsoluteY());
}
if(page.getBoundingBox().getHeight() != 842.00f) {
img.setAbsolutePosition(img.getAbsoluteX(), page.getBoundingBox().getHeight() - (842-img.getAbsoluteY()));
}
stamp = copy.createPageStamp(page);
stamp.getOverContent().addImage(img);
stamp.alterContents();
copy.addPage(page);
}
现在我用的是itext7
public static void addImageToPDF(String inputFilePath, Image img) throws IOException, DocumentException {
File inFile = new File(inputFilePath);
File outFile = new File(inputFilePath + "_image.pdf");
PdfDocument pdfDoc = new PdfDocument(new PdfReader(inFile), new PdfWriter(outFile));
Document document = new Document(pdfDoc);
int numberOfPages = pdfDoc.getNumberOfPages();
Rectangle pageSize;
// Loop over the pages of document
for (int i = 1; i <= numberOfPages; i++) {
pageSize = pdfDoc.getPage(i).getPageSize();
if(pageSize.getWidth() != 595.00f) {
img.setFixedPosition(pageSize.getWidth() - (595-img.getImageWidth()),img.getImageHeight());
}
if(pageSize.getHeight() != 842.00f) {
img.setFixedPosition(img.getImageWidth(), pageSize.getHeight() - (842-img.getImageHeight()));
}
document.add(img);
}
}
我需要将图像添加到右上角相对于页面,但现在将它添加到屏幕中间的右边。
添加图像时,有没有办法在itext7中设置绝对位置?图像并不总是在同一位置,以精确的宽度和高度,所以我的问题是使用固定位置
# 1 楼答案
我不明白为什么在
for
循环中需要两个箱子。如果您的目标是将图像放置在页面的右上角,并且您知道图像的宽度和高度以及页面的宽度和高度,那么您所需要做的就是计算要传递给setFixedPosition
方法的坐标setFixedPosition
接受x
和y
坐标,这是PDF坐标系中图像的左下坐标,即从左到右、从上到下因此,您需要从页面宽度中减去图像宽度,并对高度执行相同的操作,这将产生以下一行: