TCPDF Конкретная граница для разных сторон

Я только начал использовать TCPDF (вывод с помощью HTML), и я не понимаю, почему я не могу использовать встроенный стиль CSS для границы, как показано ниже:

style="border-right: 1px"

Посмотрев некоторые примеры, единственное место, где я вижу использование границ, — это таблица с использованием свойства border="1". Это очень расстраивает, и я надеюсь, что у меня есть способ использовать весь встроенный CSS вместо старых атрибутов HTML, таких как «граница».

Спасибо за любую помощь, Метрополис


person Metropolis    schedule 15.04.2010    source источник


Ответы (5)


Начиная с версии 5.7 TCPDF ( http://www.tcpdf.org ) включает полную поддержку границ CSS, поэтому у вас есть лишь бы обновить. В любом случае, не забудьте правильно установить границы.

Например:

border-right: 1px solid black;
person user412934    schedule 06.08.2010
comment
Я использую 5.9, но границы не работают должным образом - person Vipul Hadiya; 12.03.2021

Этот ответ устарел, так как текущие версии tcpdf, похоже, поддерживают встроенные определения границ css. Используйте это, только если вы все еще используете старый tcpdf и не можете переключиться.

Я также использую функцию writeHtml в недавнем проекте и обнаружил, что рисование линий в рассчитанных позициях не было для меня реальным вариантом. поэтому я создал небольшой хак, чтобы включить черные границы 1px для тегов tr td div.

вам нужно внести два изменения в класс tcpdf (или переопределить функцию writeHtml в вашем собственном классе pdf, наследующем от tcpdf):

Так что просто ищите следующее:

if (isset($dom[$key]['content'])) {
    $cell_content = $dom[$key]['content'];
} else {
    $cell_content = ' ';
}

после этого включают:

if (isset($dom[$key]['attribute']['border'])) {
    $cell_borderHack = $dom[$key]['attribute']['border'];
} elseif (isset($dom[$trid]['attribute']['border'])) {
    $cell_borderHack = $dom[$trid]['attribute']['border'];
} else {
    $cell_borderHack = false;
}

а затем найти:

$this->MultiCell($cellw, $cellh, $cell_content, false, $lalign, false, 2, '', '', true, 0, true);

и замените его на:

$this->MultiCell($cellw, $cellh, $cell_content, $cell_borderHack, $lalign, false, 2, '', '', true, 0, true);

После внесения этих изменений становится возможным определить верхнюю левую и нижнюю границы, просто поместив комбинацию «TRBL» в атрибут границы вашего html-тега. например: -> отобразит верхнюю и левую границу 1px сплошным черным цветом в этой ячейке таблицы.

Я знаю, что это далеко не правильный HTML: J, но это сэкономило мне много времени и сил.

Следует также упомянуть, что есть очень веская причина не использовать dompdf из-за отсутствия поддержки utf-8, это доставит вам еще большие проблемы, особенно если вы создаете Pdf из многоязычной базы данных, что я предполагаю.

Tcpdf - единственная известная мне библиотека php, которая без проблем обрабатывает utf-8 (пожалуйста, поправьте меня, если я ошибаюсь в этом случае).

person cioddi    schedule 01.07.2010

TCPDF 5.9.010 (27 октября 2010 г.) — добавлена ​​поддержка свойств CSS «border-spacing» и «padding» для таблиц. Последняя версия, когда я пишу этот пост: TCPDF 5.9.034 (2010-12-19)

person KotaKomputer    schedule 03.01.2011

Это немного странно, но вы можете нарисовать границу самостоятельно, используя метод Line.

Пример

$style = array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0));
$this->Line(x1, y1, x2, y2, $style);
person Alex Zheka    schedule 22.04.2013

К сожалению, TCPDF не поддерживает ПОЛНЫЙ CSS, надеется, что у кого-то получится быстро исправить это, или сам разработчик сделает его совместимым со следующей версией.

person Mohsin    schedule 25.04.2010