0

我使用 onStartPage 事件处理程序编写标题,效果很好,但我需要知道我是否发出了 NewPage() 或它是由于页面溢出而发出的。有没有优雅的说法?提前感谢您的帮助!

4

1 回答 1

0

您已经编写了一个页面事件实现,并且您已经实现了它的一个或多个方法。您可以像这样创建此事件的实例:

MyPageEvent event = new MyPageEvent();
writer.setPageEvent(event);

每当onStartPage()调用 时,您都想知道它是从 iText 中调用的,还是使用该newPage()方法从您的代码中调用的。由于 iText 在newPage()内部使用相同的方法,因此您必须使用一个技巧。

将 memberVariable 添加到您的页面事件应用程序。就像是:

protected boolean myNewPage = false;

现在将此方法添加到您的事件中:

public void newPage(Document document) {
    myNewPage = true;
    document.newPage();
    myNewPage = false;
}

现在,每当您想触发新页面时,请不要使用:

document.newPage();

改用这个:

event.newPage(document);

onStartPage()每个初始化的新页面都会在内部调用该方法,此时,每当您触发时,该方法的值myNewPage将是;否则它将是。我希望这有帮助; 我没有测试它,我只是告诉你我会尝试什么。truenewPage()false

(PS:我是iText的原始开发者。)

于 2013-05-05T07:47:11.140 回答