我正在使用iText来生成PDF和RTF。我知道用iText生成RTF并不流行,但我仍然需要使代码适用于两者。从技术上讲,我可以有不同的代码片段来处理每种类型,但它需要能够被包含在同一个文件/类中。使用iText将标题添加到PDF和RTF
我可以使用代码是这样的:
String outputData = getFieldValue(myRecord, myFieldName);
if (exportToPDF) {
iTextPdfPCell = new PdfPCell(pdfPTable.getDefaultCell());
iTextPdfPCell.setPhrase(outputData);
pdfPTable.addCell(iTextPdfPCell);
}
if (exportToRTF) {
iTextCell = new RtfCell(outputData);
iTextTable.addCell(iTextCell);
}
我可以添加使用的HeaderFooter将出现两个PDF上RTFS
Phrase headerPhrase = new Phrase ("This is a page header.");
HeaderFooter header = new HeaderFooter(headerPhrase, false);
iTextDoc.setHeader(header);
麻烦的是当标题变得复杂的标题。我想添加一个包含表格和图像的标题(图像可能在表格内)。我看到了一个不同的论坛一些代码,暗示这样做:
Phrase headerPhrase = new Phrase();
headerPhrase.add(iTextTable);
HeaderFooter header = new HeaderFooter(headerPhrase, false);
iTextDoc.setHeader(header);
虽然我的初步测试表明,这不会导致任何编译错误和技术上的“作品”,它开始头表在同样的位置文件的正文,所以它们重叠。当我将页边距设置得更宽以允许头部空间时,它只是将头向下移动到正文中。
我在线阅读的大部分信息(和手册中)似乎都指向使用页面事件,但这意味着我的类必须扩展PdfPageEventHelper。如果我这样做,
1.有什么类似的RTF?
2.如果存在,相同的类是否可以扩展'RtfPageEventHelper'(如果存在)和PdfPageEventHelper?我不能为每种输出类型编写单独的类
3.如果没有,是否可以在HeaderFooter类中使用表/图像,这对于PDF和RTF都适用?
4.(我甚至不想问这个)既然iText似乎已经让RTF生成了,我是否应该使用别的东西来生成RTF(最好也适用于PDF)?