我正在使用iText生成PDF和RTF . 我知道使用iText的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添加 Headers ,该 Headers 将出现在PDF和RTF上
Phrase headerPhrase = new Phrase ("This is a page header.");
HeaderFooter header = new HeaderFooter(headerPhrase, false);
iTextDoc.setHeader(header);
问题是 Headers 变得复杂 . 我想添加一个包含表格和图像的 Headers (图像可能在表格内) . 我在另一个论坛上看到了一些代码,建议这样做:
Phrase headerPhrase = new Phrase();
headerPhrase.add(iTextTable);
HeaderFooter header = new HeaderFooter(headerPhrase, false);
iTextDoc.setHeader(header);
虽然我的初始测试显示这不会导致任何编译错误并且在技术上“正常”,但它会将头表启动到与文件正文相同的位置,因此它们会重叠 . 当我将页边距设置得更宽以允许 Headers 的空间时,它只是将 Headers 向下移动到主体 .
我在线阅读(以及手册中)的大部分信息似乎都指向使用页面事件,但这意味着我的类必须扩展PdfPageEventHelper . 如果我这样做,
- RTF有什么相似之处吗?
2.如果有,可以同一个类扩展'RtfPageEventHelper'(如果存在)和PdfPageEventHelper?我无法为每种输出类型编写单独的类
3.如果没有,有没有办法可以在HeaderFooter类中使用表/图像,它已经适用于PDF和RTF?
4.(我甚至不想问这个)因为iText似乎已经留下了RTF生成,我应该使用其他东西来生成RTF(最好也适用于PDF)?
2 回答
我是用这种格式做的 . 是RTF,但我认为与PDF相同 . 只更改PdfHeader的RtfHeader
我等着帮忙 .
每页都会显示带HeaderFooter的页眉或页脚 . 如果您只想要一个文档 Headers ,只需在内容之前向页面添加标准元素(段落/等) .
例如,我正在使用我的文档: