我正在使用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是文档中的页面总数)
答案 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.RtfPageNumber
和text.rtf.field.RtfTotalPageNumber
。它们都延伸Chunk
。 text.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 ......他在代码搜索中表现出色......
美好的一天......