Php center text in table

Centre Table In PHPDOCX

I am dynamically creating a msword document in PHP using PHPDocx (free version). I am having trouble get a table to centre align in the page. I have tried passing in the style parameters as stated in the documentation, but no joy. Any ideas on how to fix this? My current code is;

$docx = new CreateDocx(); $valuesTable = array( array( 11, 12 ), array( 21, 22 ), ); $paramsTable = array( 'jc' => 'center', 'border' => 'single', 'border_sz' => 20 ); $docx->addTable($valuesTable, $paramsTable); $docx->createDocx('example_table'); 

1 Answer 1

I had the same problem. If you looking at CreateTable source you can see that method for aligning generateJC() is never called so passing a ‘jc’ parameter has no effect (this is the same with most of the options).

You can override this creating a new class like:

class SmCreateTable extends CreateTable< public function createTable() < $this->_xml = ''; $args = func_get_args(); if (is_array($args[0])) < $this->generateTBL(); $this->generateTBLPR(); if(!empty($args[1]['jc']))< $this->generateJC($args[1]['jc']); > $this->generateTBLW(); if (!empty($args[1]['border'])) < $this->generateTBLBORDERS(); $this->generateTBLBOTTOM(); $this->generateTBLLEFT(); $this->generateTBLTOP(); $this->generateTBLRIGHT(); $this->generateTBLINSIDEH(); $this->generateTBLINSIDEV(); > $this->generateTBLLOOK(); $this->generateTBLOVERLAP(); $intLine = 0; foreach ($args[0] as $datDepth) < $this->generateTR(); $intLine++; foreach ($datDepth as $cont) < $this->generateTC(); $this->generateP(); $this->generateR(); if ($args[1]['font'] != '') < $this->generateRPR(); $this->generateRFONTS($args[1]['font']); > $this->generateT($cont); > $this->cleanTemplateR(); > > > private function cleanTemplateR() < $this->_xml = preg_replace('/__GENERATETR__/', '', $this->_xml); > > 
$table = new SmCreateTable(); $table->createTable($valuesTable, $paramsTable); 

Источник

How to Center the Text in the HTML Table Row

Earlier, it was possible to do this using the align attribute, however, it is deprecated in HTML5. Instead of using that attribute, use the CSS text-align property, or specify it through the inline style attributes.

In this snippet, we’ll show and explain examples with the text-align property and style attribute.

Create HTML

table> tr> td>Text td> td>Text td> tr> tr> td>Text td> td>Text td> tr> table>

Add CSS

table, table td < border: 1px solid #cccccc; > td < height: 80px; width: 160px; text-align: center; vertical-align: middle; >

Now, you can see the full example.

Читайте также:  Java что значит abstract

Example of centering the text in table row using the CSS text-align property:

html> html> head> style> table, table td < border: 1px solid #cccccc; > td < height: 80px; width: 160px; text-align: center; vertical-align: middle; > style> head> body> table> tr> td>Text td> td>Text td> tr> tr> td>Text td> td>Text td> tr> table> body> html>

Result

In our next example, we specify the text-align and vertical-align properties through the style inline attribute.

Example of centering the text in table row using the style attributes:

html> html> head> style> td < height: 80px; width: 160px; > style> head> body> table border="1"> tr> td style="text-align: center; vertical-align: middle;">Text td> td style="text-align: center; vertical-align: middle;">Text td> tr> tr> td style="text-align: center; vertical-align: middle;">Text td> td style="text-align: center; vertical-align: middle;">Text td> tr> table> body> html>

The style attribute overrides the styles set globally. It will override any style set in the tag or external style sheet.

Example of centering only elements:

html> html> head> style> table, table th, td < border: 1px solid #cccccc; border-collapse: collapse; > th, td < height: 80px; width: 160px; padding: 5px 10px; vertical-align: middle; > th < text-align: right; > td < text-align: center; > style> head> body> table> thead> tr> th>Heading th> th>Heading th> tr> thead> tbody> tr> td>Text td> td>Text td> tr> tr> td>Text td> td>Text td> tr> tr> td>Text td> td>Text td> tr> tbody> table> body> html>

Источник

PHP TCPDF — Как вертикальное выравнивание текста в ячейке таблицы?

По умолчанию значения в ячейках ячеек (в таблицах, генерируемых TCPDF) выравниваются по вертикали в верхней части ячейки. Кто-нибудь нашел простой метод вертикального выравнивания текста до середины ячейки? Я нашел пару предлагаемых решений в Интернете, но это не кажется мне идеальным. Например, одно предложение (http://sourceforge.net/projects/tcpdf/forums/forum/435311/topic/4385696) заключается в установке содержимого каждой ячейки с использованием метода TCPDF MultiCell(), но это боль когда вы просто хотите выписать свой HTML-код, а затем сгенерировать PDF. Другое предложение (http://bytethinker.com/blog/tcpdf-and-vertical-alignment-of-table-cells) состоит в том, чтобы размещать промежутки в каждой ячейке и создавать пустые строки с разрывами строк в этих промежутках, чтобы заставьте текст вниз (и, следовательно, к вертикальному центру), но это немного взломать. Кто-нибудь нашел лучший/более чистый способ достичь этого? Разумеется, библиотека, которая популярна, будет удовлетворять такому общему требованию?

Читайте также:  Bot delete message python telebot

Хэя. Я должен был упомянуть об этом в тексте выше, но да, я попробовал стандартный подход HTML / CSS.

Насколько мне известно, да. Я бы не стал задавать этот вопрос, если бы не задал 🙂 Честно говоря, я надеюсь, что это просто случай моих ограниченных знаний, в отличие от ограниченной функциональности TCPDF, которая мешает мне вертикально выравнивать текст в TCPDF ячейки таблицы. Так что, хотя я ценю ваши причины ставить под сомнение мои знания CSS, кто-нибудь здесь действительно делал это в TCPDF?

12 ответов

Помните, что TCPDF не может обрабатывать полномасштабные HTML и CSS так, как это может сделать браузер. Nicolas проделал хорошую работу по предоставлению наиболее часто используемых кодов HTML. CSS не может быть размещен в верхней части документа, он должен быть вставлен в строку.

Таблицы должны быть отформатированы полностью вручную — ячейки не настраиваются автоматически так, как в браузере. Аналогично, вы должны выяснить, насколько высок что-то, и добавить или размер невидимого изображения, чтобы нажать его, если хотите.

Возможно, однажды он добавит больше этой функции. Как бы то ни было, я считаю класс замечательным.

Следующие способы работали для меня. 1. Введите приведенный ниже код непосредственно над табличным тегом.

Примечание. Высота должна быть двойной длины строки.

В обоих направлениях вам нужно настроить высоту.

Если его статическая таблица. вы можете добавить невидимый текст над содержимым, чтобы вывести текст вниз:

 
 
The contents of my cell.

Отрегулируйте размер шрифта & nbsp; поднять или опустить текст. Его взломать, но он действительно работает. < br/" >тоже работают. но они будут менее точными.

Добавление стиля = «line-height: 50%;» в теге изображений работает для меня. Пожалуйста, попробуйте. В моем случае, я хотел вертикальное выравнивание изображения в ячейке таблицы. Вы можете добавить div в ячейку таблицы и добавить в него изображение или текст. Ниже работает для меня.

Читайте также:  Python module sys exit

У меня есть таблица с одним столбцом, имеющим другой размер шрифта (потому что цифры большие и не будут оставаться на одной строке, если не сделать меньше), и клиент хочет, чтобы они были вертикально центрированы в ячейках.

После попытки всех хаков, которые я узнал в своей истории HTML и CSS и TCPDF каждый раз, когда я насмехался над мной, я, наконец, решил такое умное решение, которого он не ожидал, и, наконец, я получил более или менее вертикальное выравнивание ячеек место, то есть в середине ячейки.

Я узнал, что если в одной ячейке есть изображение, TCPDF выравнивает текст в нижней строке изображения. Поэтому я сделал утилиту script, чтобы служить мне с белым изображением параметризованной ширины и высоты и помещать это перед текстом. Можно также просто сделать белое изображение желаемых размеров и использовать его, но мне было легче экспериментировать с script и различными параметрами. В моем случае wwidth составляет всего 1px, но теоретически можно также перемещать текст вправо с изображением.

Конечно, есть и некоторые проблемы с этим подходом, но в моем случае все цифры довольно хорошо себя ведут. Если высота централизованного текста или других столбцов сильно различается, очень сложно найти хорошее значение (хотя при параметризации можно попытаться вычислить высоту, необходимую для длин каждой ячейки в строке).

Я бы по-прежнему предпочел бы, если бы можно было по крайней мере иметь верхнее дополнение или верхний край, который можно было бы установить в ячейку (рабочий вертикальный выравнивание был бы еще более желательным, но даже если бы какой-либо инструмент облегчил жизнь)

Надеюсь, что это поможет даже некоторым другим слабым кодам

Источник

Оцените статью