我正在使用 RtfWriter (itext-rtf-2.1.4.jar) 和 com.lowagie (itext-2.1.5) 创建一个 .doc 文件。
早些时候,当我创建 PDF 时,我能够通过捕获文档关闭事件和使用以下代码在类中创建 PDF 时设置的新页事件来打印显示“Page X of Y”的页脚:
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("Sample.pdf"));
MyPageEvents events = new MyPageEvents();
writer.setPageEvent(events);
其中 MyPageEvents 是捕获分页和文档关闭等事件的类文件......它将设置所需的页眉和页脚。
这与 PDFWriter 配合得很好,但是当我开始使用 RtfWriter2 创建 .doc 文件时,它不支持事件......
RtfWriter2 writer = RtfWriter2.getInstance(document, new FileOutputStream("Sample.doc"));
MyPageEvents events = new MyPageEvents();
但它不会像 PDFWriter 那样重新组织 writer.setPageEvents() 方法...
是否有可能让页脚显示第 X 页,共 Y 页(此处 X 是当前页,而 Y 是文档中的总页数)
最佳答案
啊!快速browsing of the source揭晓答案:
RtfWriter2.setHeader()
和 setFooter()
。
所以像...
HeaderFooter header = new HeaderFooter();
Paragraph headerP = header.paragraph();
myBuildHeader(headerP);
myRtfWriter2.setHeader(header);
简单。
PS:Google code search非常有帮助。我极力推荐它。
第 X 页,共 Y 页?啊。出色地。
更多 code searching在 RtfWriter2 等中生成了 text.rtf.field.RtfPageNumber
和 text.rtf.field.RtfTotalPageNumber
。它们都扩展了Chunk
。 text.rtf.RtfHeaderFooter
可以采用 Element[]
并且不限于单个 Paragraph
。鉴于页码类都扩展了 Chunk,这不相关,但最好了解一下以供将来引用。
我对代码的猜测:
RtfHeaderFooter footer = new RtfHeaderFooter();
Paragraph p = footer.paragraph();
p.add(new RtfPageNumber());
p.add( " of ");
p.add(new RtfTotalPageNumber());
myRtfWriter2.setFooter(footer);
其余部分应保持不变。我认为。我从未真正使用过 RtfWriter2(或 RtfWriter),所以如果它不能完全按原样工作,请不要太震惊。
关于java - 使用 RtfWriter2 时将页脚打印为第 X 页,共 Y 页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5064418/