我刚开始使用 TCPDF(使用 HTML 输出),但我不明白为什么我不能为边框使用内联 CSS 样式,如下所示,
style="border-right: 1px"
在查看了一些示例之后,我看到使用边框的唯一地方是在使用border="1" 属性的桌子上。这非常令人沮丧,我希望有一种方法可以让我使用所有内联 CSS,而不是像“border”这样的旧 HTML 属性。
感谢您的帮助,大都会
由于 5.7 版 TCPPDF ( http://www.tcpdf.org ) 包含对 CSS 边框的全面支持,因此您只需更新即可。无论如何,不要忘记正确设置边界。
例如:
border-right: 1px solid black;
此答案已被弃用,因为当前版本的 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 库(如果我在这种情况下错了,请纠正我)。
TCPDF 5.9.010 (2010-10-27) - 添加了对表格的 CSS 属性“border-spacing”和“padding”的支持。我写这篇文章时的最新版本:TCPDF 5.9.034 (2010-12-19)
这种奇怪,但是你可以使用 Line 方法自己绘制边框。
例子
$style = array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0));
$this->Line(x1, y1, x2, y2, $style);
不幸的是,TCPDF 不支持完整的 CSS,希望有人能快速解决这个问题,或者开发人员本身可以使其在下一个版本中兼容。