Java iText5 PDF内容在页脚上被覆盖
我正在使用iText5和Java来创建pdf和文档Java iText5 PDF内容在页脚上被覆盖,java,itext,Java,Itext,我正在使用iText5和Java来创建pdf和文档 document = new Document(new Rectangle(1150f, 1150f)); 我的pdf内容在页脚(即图像)上被覆盖 页脚代码: public void onEndPage(PdfWriter writer, Document document) { document.newPage(); try { ColumnText.sh
document = new Document(new Rectangle(1150f, 1150f));
我的pdf内容在页脚(即图像)上被覆盖
页脚代码:
public void onEndPage(PdfWriter writer, Document document) {
document.newPage();
try {
ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_CENTER, new Phrase(String.format("Page %d", writer.getPageNumber())), (document.left() + document.right())/2,document.bottom()-18,0);
Image image = Image.getInstance(PdfHeaderFooter.class.getResource("/static/images/SampleFooter.png"));
image.scaleAbsolute(1100f, 75f);// image width,height
image.setAbsolutePosition(30, 40);
document.add(image);
}
catch(DocumentException de) {
throw new ExceptionConverter(de);
} catch (MalformedURLException e) {
logger.error(ExceptionUtils.getStackTrace(e));
} catch (IOException e) {
logger.error(ExceptionUtils.getStackTrace(e));
}
}
此外,一些搜索建议。设置边距,但我无法找到设置边距或任何其他解决方案的确切位置
请帮助,当内容超出pdf区域且未在页脚图像上重叠时,我应该如何创建新页面。您的代码中存在多个问题
onedpage()期间的newPage()
页面更改期间调用事件回调onEndPage()
;因此,在该方法中调用document.newPage()
可能是危险的,至少是毫无意义的
文档。在onedpage()期间添加
正如iText的文档以及stackoverflow的答案和评论中经常提到的,您不应在onedpage()期间使用document.add
您可以绘制到直接内容(PdfWriter.getDirectContent()
)或背景内容(PdfWriter.getDirectContentUnder()
)
协调
您可以使用以下方法创建文档
:
document = new Document(new Rectangle(1150f, 1150f));
此构造函数应用36个单位的默认边距:
public Document(Rectangle pageSize) {
this(pageSize, 36, 36, 36, 36);
}
因此,您的内容将以36
现在像这样添加图像
image.scaleAbsolute(1100f, 75f);// image width,height
image.setAbsolutePosition(30, 40);
图像位置是图像的左下角。因此,您打算在30
因此,图像显然将重叠部分内容。要么向下移动图像,要么使用具有足够大底部边距的显式边距。代码中存在多个问题
onedpage()期间的newPage()
页面更改期间调用事件回调onEndPage()
;因此,在该方法中调用document.newPage()
可能是危险的,至少是毫无意义的
文档。在onedpage()期间添加
正如iText的文档以及stackoverflow的答案和评论中经常提到的,您不应在onedpage()期间使用document.add
您可以绘制到直接内容(PdfWriter.getDirectContent()
)或背景内容(PdfWriter.getDirectContentUnder()
)
协调
您可以使用以下方法创建文档
:
document = new Document(new Rectangle(1150f, 1150f));
此构造函数应用36个单位的默认边距:
public Document(Rectangle pageSize) {
this(pageSize, 36, 36, 36, 36);
}
因此,您的内容将以36
现在像这样添加图像
image.scaleAbsolute(1100f, 75f);// image width,height
image.setAbsolutePosition(30, 40);
图像位置是图像的左下角。因此,您打算在30
因此,图像显然将重叠部分内容。请将图像向下移动或使用具有足够大底部边距的显式边距。请接受@mkl的回答,因为他是对的。在阅读代码时,很明显您没有阅读任何文档。你的代码完全错了!请接受@mkl的回答,因为他是对的。在阅读代码时,很明显您没有阅读任何文档。你的代码完全错了!非常感谢。你是对的,实际上在页面末尾添加新页面是没有用的,而且是错误添加的。我会按照你的建议调整坐标。非常感谢你。你是对的,实际上在页面末尾添加新页面是没有用的,它是错误添加的。我会按照你的建议调整坐标。