TCPDF不同方面的特定边界

时间:2010-04-15 15:43:09

标签: php tcpdf

我刚刚开始使用TCPDF(使用HTML输出),我不明白为什么我不能像下面那样为边框设置内联CSS样式,

style="border-right: 1px"

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

感谢任何帮助,Metropolis

5 个答案:

答案 0 :(得分:7)

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

例如:

border-right: 1px solid black;

答案 1 :(得分:3)

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

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

你需要对tcpdf类进行两处更改(或者在你自己的pdf类中覆盖继承自tcpdf的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标签的border属性即可。 例如。:   - >将顶部和左边框1px实心黑色渲染到此表格单元格。

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

还应该提到的是,由于缺乏utf-8支持,有一个很好的理由不去dompdf它会让你遇到更大的麻烦,特别是如果你从多语种数据库生成Pdf,我认为。 / p>

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

答案 2 :(得分:2)

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

答案 3 :(得分: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);

答案 4 :(得分:0)

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