iText HTML页眉和页脚维度
我正在看样本: 但是在OneDPage方法中iText HTML页眉和页脚维度,itext,Itext,我正在看样本: 但是在OneDPage方法中 @Override public void onEndPage(PdfWriter writer, Document document) { try { ColumnText ct = new ColumnText(writer.getDirectContent()); ct.setSimpleColumn(new Rectangle(36, 832, 559, 810
@Override
public void onEndPage(PdfWriter writer, Document document) {
try {
ColumnText ct = new ColumnText(writer.getDirectContent());
ct.setSimpleColumn(new Rectangle(36, 832, 559, 810));
for (Element e : header) {
ct.addElement(e);
}
ct.go();
ct.setSimpleColumn(new Rectangle(36, 10, 559, 32));
for (Element e : footer) {
ct.addElement(e);
}
ct.go();
} catch (DocumentException de) {
throw new ExceptionConverter(de);
}
}
我们必须知道标题元素所处角度的高度和宽度
在编译时,我不知道将使用哪个HTML,因此我想推断维度,或者使用另一个不需要宽度和高度的代码在
onEndPage()方法的参数中有一个文档对象。您可以按如下方式获取文档的页面大小:
Rectangle pageSize = document.getPageSize();
您还可以要求文档提供其页边距:
float left = document.leftMargin();
float right = document.rightMargin();
float top = document.topMargin();
float bottom = document.bottomMargin();
可以使用这些值定义页眉和页脚的可用空间
例如,标题:
Rectangle rect1 = new Rectangle(
pageSize.left() + left, pageSize.top() - top,
pageSize.right() - right, pageSize.top());
或页脚:
Rectangle rect2 = new Rectangle(
pageSize.left() + left, pageSize.bottom(),
pageSize.right() - right, pageSize.bottom() + bottom);
注意事项:对于要添加的内容,您的矩形可能太小。在这种情况下,部分内容将丢失。通过查看go()
方法的返回值,您将知道何时发生这种情况:
int status = ct.go();
boolean fits = !ColumnText.hasMoreText(status);
如果fits
为true
则不会丢失任何内容。如果fits
为false
,您可能需要重新考虑如何添加内容。您可以先在模拟模式下添加内容,检查其是否合适,然后将其真实添加。如果不合适,您可以将内容缩小(例如,减小字体大小),然后重试,直到内容合适为止。在Bruno Lowagie回复:
我的目标是发现标题矩形的确切尺寸,这样我就可以用右上边距打印文档正文
我不想要这个:
但是我在运行前不知道html标题的内容,所以我需要一种不做任何尝试就获得标题矩形高度的方法。使用PdfPageEventHelper
的实现来计算或传递维度?