使用itext7的绝对位置

时间:2018-01-22 17:24:06

标签: java image position 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 个答案:

答案 0 :(得分:1)

我不明白你的for循环中需要两个案例的原因。如果您的目标是将图像放置在页面的右上角位置,并且您知道图像的宽度和高度以及页面宽度和高度,那么您需要做的就是计算要传递给setFixedPosition方法的坐标

setFixedPosition接受xy坐标,这些坐标是PDF坐标系中图像的左下坐标,即从左到右,从上到下。

因此,您需要从页面宽度中减去图像宽度,并对高度执行相同操作,从而产生以下单行:

img.setFixedPosition(pageSize.getWidth() - img.getImageWidth(), pageSize.getHeight() - img.getImageHeight());