【问题标题】:iText HTML header and footer dimensionsiText HTML 页眉和页脚尺寸
【发布时间】:2017-02-28 22:58:56
【问题描述】:

我正在查看示例:http://developers.itextpdf.com/question/how-add-html-headers-and-footers-page

但在 onEndPage 方法中

 @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);
         }
     }

我们必须知道标题元素所在的ractangle的高度和宽度。

在我的情况下,在编译时我不知道将使用哪个 HTML,所以我想推断尺寸,或者使用不需要宽度和高度的其他代码

【问题讨论】:

  • 使用PdfPageEventHelper 的实现来计算或传递维度?

标签: itext


【解决方案1】:

onEndPage() 方法的参数中有一个Document 对象。您可以像这样获取文档的页面大小:

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);

如果fitstrue,则没有内容丢失。如果fitsfalse,您可能需要重新考虑如何添加内容。您可以先在模拟模式下添加内容,检查是否合适,然后再添加。如果不合适,您可以缩小内容(例如通过减小字体大小),然后重试直到内容合适为止。

【讨论】:

    【解决方案2】:

    在 Bruno Lowagie 的回复中:

    我的目标是找出标题矩形的确切尺寸,这样我就可以打印带有右上边距的文档正文。

    我不想要这个:

    但我不知道运行前的 html 标题内容,所以我需要一种方法来获取标题矩形高度而不做任何尝试。

    【讨论】:

      猜你喜欢
      • 2012-02-25
      • 1970-01-01
      • 2023-03-12
      • 2012-09-17
      • 1970-01-01
      • 2015-06-04
      • 1970-01-01
      • 2012-01-05
      • 2017-11-30
      相关资源
      最近更新 更多