Таблица PDF против таблицы (против таблицы SimpleTable?)

Я пишу код, который генерирует документы как в формате PDF, так и в формате RTF, в зависимости от выбора пользователя. Информация в обоих документах одинакова.

До сих пор мы использовали классы, такие как Table, Cell, HeaderFooter и т. Д., Которые отображаются в правильной форме составителем документов (PdfWriter или RtfWriter2).

Однако чем дальше я пытаюсь внести изменения (в основном из-за того, что при обновлении до iText 2.1 интервал стал немного странным), тем больше мне говорят «использовать PdfpTable & quot;» или «Использовать pageEvents для установки заголовков»; , Кажется, что многие из общих классов устарели.

Я подумываю переделать код, чтобы отделить создание таблиц для PDF и RTF. Тем не менее, все учебные материалы по iText, кажется, на самом делеrecommend использование таблицы в случае, когда необходимы документы как в формате PDF, так и в формате RTF.

Кроме того, похоже, что хотя существует класс PdfpTable, для RTF нет ничего похожего, поэтому я все равно буду использовать Table, что сделает меня уязвимым ко всем причудам, которые возникают вместе с неподдерживаемым классом Table.

В принципе, каковы преимущества / недостатки разделения кода на два раздела - один для создания документов PDF, а другой - для создания одинаковых документов в формате RTF, если он был выбран? И где SimpleTable приходит ко всему этому? Это даст мне гибкость, которая мне нужна?

Спасибо!

Ответы на вопрос(1)

iText In ActionКонец главы 6:

Если вы посмотрите на iText API, вы также найдете некоторые другие классы таблиц.com.lowagie.text.Table является исходным классом таблицы; это происходит с первых дней iText. Он использует классcom.lowagie.text.pdf.PdfTable внутренне для рендеринга таблицы в PDF (не путайте этот класс сPdfPTable).
Там также новееSimpleTable класс, который пытается сформировать связь между PdfPTable а такжеTable, Он может перевести себя наPdfPTable если вы добавите его в документ, который пишет PDF или вTable если вы создаете HTML или RTF. [...]
Основным недостаткомTable класс таков, что он больше не поддерживается. Разные люди исправили большинство известных проблем, но сегодня ни один человек понимает, работают ли все Table-методы и как. Если вы решили использовать этот класс, вы более или менее сами по себе, и вы столкнетесь с множеством изворотливых проблем с компоновкой на основе исторических дизайнерских решений. Тем не менее, это не означает, что вы не можете сделать хорошее использованиеTable учебный класс.

Advantages of the Table class

С помощью класса Table вы можете сгенерировать структуру таблицы, которая может быть отображена в PDF, RTF и HTML. Если вы сравните результаты, вы увидите, что есть небольшие различия в способе представления таблицы. Это нормально; не каждая функция таблицы поддерживается в любом формате документа.

You can generate a table in PDF, HTML, or RTF using the same code. You can set padding and spacing the way it’s done in HTML. You can use the row span without having to resort to nested table. You can change the number of columns even after you’ve added cells. You can add cells at specific positions (the number of rows is augmented dynamically). You can delete a column before adding the table to the document. You can let iText add the Table as if it was a PdfPTable. You get a PdfPTable object based on the Table object.

В отличие от PdfPTable, вы можете добавлять ячейки в таблицу в произвольном порядке и добавлять или удалите столбцы, если это необходимо. Вы даже можете перевести таблицу в таблицу PDF, если вы не использовал setRowspan ().

Там также естьSimpleTable, класс, который является упрощенной версией (PdfP)-Table, При добавленииSimpleTable в PDF-документ iText сначала пытается добавить стол какPdfPTable; если это не удается, он добавляется какTable, При добавленииSimpleTable к документу в формате RTF или HTML он добавляется какTable. SimpleTable отличается отTable а такжеPdfPTable в том смысле, что он вновь вводит понятие строк. Это может быть удобно, если вы анализируете XML-файл со структурой ячейка-таблица-строка. Если тег, соответствующий строкам, имеет атрибуты, вам не нужно определять это свойство для каждой ячейки в строке отдельно; Вы можете установить свойство для всего грести сразу.

Summary

PdfPTable должен быть вашим первым выбором; но в зависимости от требований, определенных для вашего проекта, могут быть веские причины для выбораTable или жеSimpleTable.

Ваш ответ на вопрос