[英]Absolute position with 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中設置絕對位置? 圖像並不總是在相同的位置上,確切的寬度和高度,所以使用固定位置對我來說是個問題。
我不知道為什么你需要兩種情況你for
循環。 如果您的目標是將圖像放置在頁面的右上角,並且知道圖像的寬度和高度以及頁面的寬度和高度,那么您要做的就是計算要傳遞給setFixedPosition
方法的坐標。
setFixedPosition
接受x
和y
坐標,它們是PDF坐標系中圖像的左下角坐標,即從左到右,從上到下。
因此,您需要從頁面寬度中減去圖像寬度,並對高度進行相同操作,這將導致以下情況:
img.setFixedPosition(pageSize.getWidth() - img.getImageWidth(), pageSize.getHeight() - img.getImageHeight());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.