使用RtfWriter2时,将页脚打印为Y的页面X.

时间:2011-02-21 09:48:24

标签: java pdf itext rtf

我正在使用RtfWriter创建一个.doc文件(itext-rtf-2.1.4.jar)& com.lowagie(itext-2.1.5)。

在我创建PDF的早些时候,通过捕获文档关闭事件和使用以下代码在类中创建PDF时设置的新页面事件,我能够打印显示“Y页面X”的页脚: / p>

PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("Sample.pdf"));

MyPageEvents events = new MyPageEvents();
writer.setPageEvent(events);

MyPageEvents是捕获pageending和document closing等事件的类文件....它将设置所需的页眉和页脚。

这对PDFWriter非常有效,但是当我开始使用RtfWriter2创建.doc文件时,它不支持事件....

RtfWriter2 writer = RtfWriter2.getInstance(document, new FileOutputStream("Sample.doc"));


MyPageEvents events = new MyPageEvents();

但它没有像PDFWriter那样重新组织方法writer.setPageEvents()......

是否有可能让页脚显示Y的页面X(此处X是当前页面,而Y是文档中的页面总数)

2 个答案:

答案 0 :(得分:2)

啊!快速browsing of the source揭示了答案:

RtfWriter2.setHeader()setFooter()

就像......

HeaderFooter header = new HeaderFooter();
Paragraph headerP = header.paragraph();
myBuildHeader(headerP);

myRtfWriter2.setHeader(header);

易。

PS:Google code search非常有帮助。我不能高度推荐它。


Y的第X页?啊。好。

RtfWriter2中的更多code searching等生成了text.rtf.field.RtfPageNumbertext.rtf.field.RtfTotalPageNumber。它们都延伸Chunktext.rtf.RtfHeaderFooter可以Element[],但不限于Paragraph。鉴于页码类都扩展了Chunk,这是不相关的,但很高兴知道For Future Reference。

我对代码的猜测:

RtfHeaderFooter footer = new RtfHeaderFooter();
Paragraph p = footer.paragraph();
p.add(new RtfPageNumber());
p.add( " of ");
p.add(new RtfTotalPageNumber());

myRtfWriter2.setFooter(footer);

其余部分应保持相同。我认为。我从来没有真正使用过RtfWriter2(或RtfWriter),所以如果不能完全正常工作,请不要太震惊。

答案 1 :(得分:1)

以下代码会将“Y页面X”放在页脚中。

刚刚在Mark建议的代码中的几个地方进行了更改,并且稍微改变了代码的顺序,并且它工作得很漂亮....

使用writer.setFooter(footer)代替使用document.setFooter(footer)来设置页脚,而不是...... {/ p>

Paragraph p=new Paragraph();
p.add( "Page  ");
p.add(new RtfPageNumber());
p.add( " of  ");
p.add(new RtfTotalPageNumber());
p.setAlignment(Element.ALIGN_CENTER);
RtfHeaderFooter footer1 = new RtfHeaderFooter(p);
document.setFooter(footer1);

特别感谢 Mark ......他在代码搜索中表现出色......

美好的一天......