iText HTML页眉和页脚维度

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

我正在看样本:

但是在OneDPage方法中

 @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
的实现来计算或传递维度?