3

我刚开始使用 TCPDF(使用 HTML 输出),但我不明白为什么我不能为边框使用内联 CSS 样式,如下所示,

style="border-right: 1px"

在查看了一些示例之后,我看到使用边框的唯一地方是在使用border="1" 属性的桌子上。这非常令人沮丧,我希望有一种方法可以让我使用所有内联 CSS,而不是像“border”这样的旧 HTML 属性。

感谢您的帮助,大都会

4

5 回答 5

7

由于 5.7 版 TCPPDF ( http://www.tcpdf.org ) 包含对 CSS 边框的全面支持,因此您只需更新即可。无论如何,不​​要忘记正确设置边界。

例如:

border-right: 1px solid black;
于 2010-08-06T11:00:07.783 回答
3

此答案已被弃用,因为当前版本的 tcpdf 似乎支持内置的 css 边框定义。仅当您仍在使用旧的 tcpdf 且无法切换时才使用此答案。

我还在最近的一个项目中使用了 writeHtml 函数,发现在计算的位置画线对我来说不是一个真正的选择。所以我创建了一个小技巧来启用 1px 黑色边框来 tr td div 标签。

您需要对 tcpdf 类进行两项更改(或在您自己的继承自 tcpdf 的 pdf 类中覆盖 writeHtml 函数):

因此,只需查找以下内容:

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-tag 的边框属性中,就可以定义左上右下边框。例如: -> 将向该表格单元格呈现顶部和左侧边框 1px 纯黑色。

我知道这远非有效的 HTML :J 但它为我节省了很多时间和麻烦。

还应该提到的是,由于缺乏对 utf-8 的支持,有一个很好的理由不使用 dompdf,它会给你带来更大的麻烦,特别是如果你从我假设的多语言数据库生成 Pdf。

Tcpdf 是我所知道的唯一一个可以毫无问题地处理 utf-8 的 php 库(如果我在这种情况下错了,请纠正我)。

于 2010-07-01T09:41:56.330 回答
2

TCPDF 5.9.010 (2010-10-27) - 添加了对表格的 CSS 属性“border-spacing”和“padding”的支持。我写这篇文章时的最新版本:TCPDF 5.9.034 (2010-12-19)

于 2011-01-03T05:36:46.517 回答
1

这种奇怪,但是你可以使用 Line 方法自己绘制边框。

例子

$style = array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0));
$this->Line(x1, y1, x2, y2, $style);
于 2013-04-22T11:15:59.327 回答
0

不幸的是,TCPDF 不支持完整的 CSS,希望有人能快速解决这个问题,或者开发人员本身可以使其在下一个版本中兼容。

于 2010-04-25T04:23:21.640 回答