TCPDF Специальная граница для разных сторон - PullRequest
3 голосов
/ 15 апреля 2010

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

style="border-right: 1px"

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

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

Ответы [ 5 ]

7 голосов
/ 06 августа 2010

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

Например:

border-right: 1px solid black;
3 голосов
/ 01 июля 2010

Этот ответ устарел , поскольку в текущих версиях 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» в атрибут border вашего html-тега. например.: -> отобразит верхнюю и левую границу 1px сплошного черного в эту ячейку таблицы.

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

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

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

2 голосов
/ 03 января 2011

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

1 голос
/ 22 апреля 2013

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

Пример

$style = array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0));
$this->Line(x1, y1, x2, y2, $style);
0 голосов
/ 25 апреля 2010

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

...