Я использую iText для создания PDF и RTF. Я знаю, что генерация RTF с iText не популярна, но мне все еще нужно, чтобы код работал для обоих. Технически, у меня могут быть разные куски кода для обработки каждого типа, но он должен быть в одном файле / классе.
Я могу работать с таким кодом:
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, так и в RTF
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)?