По долгу службы мне приходится программировать на C#. Однажды передо мной встала задача написать модуль, который бы генерировал PDF документы "на лету". После сравнительного анализа различных библиотек я остановился на PDFSharp потому, что она позволяет вставлять картинки, работать с таблицами и, самое главное, в ней реализован компонент для просмотра сгенерированных документов.
четверг, 24 ноября 2011 г.
воскресенье, 6 ноября 2011 г.
Таблицы с большим количеством текста
Обычно не возникает проблем с включением в ячейки таблиц большого количества текста. Тех сам растянет ячейки под нужный размер. Главное не забыть ограничить ширину ячеек указав вместо стандартного параметра c,l или r параметры p,m,b позволяющие указывать ширину ячейки.
Например:
Но вот если использовать объединение ячеек между рядами multirow, то стандартный механизм уже не работает. Высота полученной ячейки будет равна сумме высот объединенных ячеек. И в результате может получится что-то такое:
Видите? Текста слишком много и он накладывается на текст в других ячейках. Единственный, известный мне, способ этого избежать - увеличить высоту ячеек. Делается это следующим трюком:
Эту хитрость я нашел здесь: http://nepsweb.co.uk/docs/tableTricks.pdf
Например:
\begin{tabular}{| p{0.5\linewidth} | c |}
\hline
Конгруэ́нтность (лат. congruens, -ntis — соразмерный, соответствующий) в широком смысле — равенство, адекватность друг другу различных экземпляров чего-либо (обычно — содержания, выраженного в различных формах, представлениях) или согласованность элементов системы между собой.
&
Конгруэ́нтность (лат. congruens, -ntis — соразмерный, соответствующий) в широком смысле — равенство, адекватность друг другу различных экземпляров чего-либо (обычно — содержания, выраженного в различных формах, представлениях) или согласованность элементов системы между собой.
\\ \hline
\end{tabular}
Но вот если использовать объединение ячеек между рядами multirow, то стандартный механизм уже не работает. Высота полученной ячейки будет равна сумме высот объединенных ячеек. И в результате может получится что-то такое:
Видите? Текста слишком много и он накладывается на текст в других ячейках. Единственный, известный мне, способ этого избежать - увеличить высоту ячеек. Делается это следующим трюком:
\newlength{\rowA}
\setlength{\rowA}{8ex} % modify as needed
\newcommand{\strutA}{% no space before strut
\rule[-0.45\rowA]{0pt}{\rowA}% put text approx mid strut
}
\begin{tabular}{|p{0.45\linewidth}|p{0.15\linewidth}|p{0.15\linewidth}|}
\hline
Вариант испытания&Ожидаемый логический уровень & Напряжение на выходе (В)\\ \hline
\multirow{2}{\linewidth}{Выход не имеет нагрузки} & 0&0\\ \cline{2-3}
& 1& 1.27 -- 0 \\ \hline
\multirow{2}{\linewidth}{Выход имеет нагрузку, резистор 1000 Ом,
подключенную к цепи GND }&0& 0 \strutA \\ \cline{2-3}
&1 &0 \strutA \\ \hline
\multirow{2}{\linewidth}{Выход имеет нагрузку резистор 1000 Ом,
подключенную к цепи питания VCC +5В} &0& 5 \strutA \\ \cline{2-3}
& 1&4.3\strutA \\ \hline
\multirow{2}{\linewidth}{Выход имеет нагрузку резистор 1000 Ом,
подключенную к дополнительному источнику
питания постоянного тока напряжением 3В. }&0&2.4\strutA \\ \cline{2-3}
& 1&3\strutA \\ \hline
\multirow{2}{\linewidth}{Выход имеет нагрузку резистор 1000 Ом,
подключенную к дополнительному источнику
питания постоянного тока напряжением 5В.}&0&4.3\strutA \\ \cline{2-3}
&1 &5 \strutA \\ \hline
\multirow{2}{\linewidth}{Выход имеет нагрузку резистор 1000 Ом,
подключенную к дополнительному источнику
питания постоянного тока напряжением 10В.} &0& 9.2\strutA \\ \cline{2-3}
&1& 10\strutA \\ \hline
\end{tabular}
Эту хитрость я нашел здесь: http://nepsweb.co.uk/docs/tableTricks.pdf
Подписаться на:
Сообщения (Atom)