代码之家  ›  专栏  ›  技术社区  ›  Metropolis

不同侧面的TCPDF特定边框

  •  3
  • Metropolis  · 技术社区  · 14 年前

    我刚开始使用tcpdf(用html输出),我不明白为什么我不能有一个内联css样式的边框,如下所示,

    style="border-right: 1px"
    

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

    谢谢你的帮助,大都会

    5 回复  |  直到 11 年前
        1
  •  7
  •   user412934    14 年前

    从5.7版开始tcpdf( http://www.tcpdf.org )包括对css边框的全面支持,所以您只需更新。无论如何,不要忘记正确设置边框。

    例如:

    border-right: 1px solid black;
    
        2
  •  3
  •   cioddi    11 年前

    这个答案不赞成。 因为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标记的border属性中。 例如。: ->会将上边框和左边框1倍纯黑呈现给此表格单元格。

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

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

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

        3
  •  2
  •   KotaKomputer    14 年前

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

        4
  •  1
  •   Alex Zheka    11 年前

    这有点奇怪,但你可以用直线法自己画边界。

    例子

    $style = array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0));
    $this->Line(x1, y1, x2, y2, $style);
    
        5
  •  0
  •   Mohsin    14 年前

    不幸的是,tcpdf并不支持完整的css,它希望有人能快速找到解决这个问题的方法,或者希望开发人员自己能在下一个版本中使它兼容。