2010-05-10 59 views
0

我正在使用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)?

回答

0

HeaderFooter的页眉或页脚显示在每个页面上。如果你只需要一个文档头文件,只需在你的内容之前添加一个标准元素(段落/ etc)到页面。

比如我和我的文档这样做:

Paragraph Header = new Paragraph("Document Header", FontFactory.getFont(FontFactory.HELVETICA, 18, Font.BOLDITALIC, new Color(0, 0, 0))); 

document.open(); 
document.add(Header); 
document.add(otherContent); 
document.close(); 
3

我做了这种格式。是用于RTF,但我认为与PDF相同。只为PdfHeader更改RtfHeader

document.open(); 
Paragraph head=new Paragraph("Head"); 
Paragraph foot=new Paragraph("Foot"); 
HeaderFoot header=new RtfHeaderFooter(head); 
HeaderFoot footer=new RtfHeaderFooter(foot); 
document.setHeader(header); 
document.setFooter(footer); 
document.close(); 

我等着帮忙。

相关问题