mgrn/tfpdf

tfpdf 库的扩展版本,具有更多功能,如回滚和更好的单元格功能。

1.0.2 2022-05-14 22:05 UTC

This package is auto-updated.

Last update: 2024-09-15 03:13:52 UTC


README

tfpdf 库的扩展版本,具有更多功能,如回滚和增强的单元格写入调用。

这个库旨在提供一个更好的 tFPDF 库的接口,虽然这是一个很棒的库,但其 API 有点难以使用。通过引入一个 Cell 对象,该对象是您在写入单元格时可能希望设置的属性的集合,可以显著简化一致的单元格调用,以及理解单元格为什么看起来是这样。此外,通过 Color 类和 ColorsEnum 对象,已经改进了颜色管理,提供了一些基础颜色供使用。此外,此库针对 PHP 8.1,因此使用枚举和类常量进行强类型使用,以减少数据类型异常。目前,该库仅关注文本增强,我预计其主要用途将是报表构建,尽管任何 tFPDF 可以做的事情,这个库都可以做到。

以下为旧库的使用示例,其中 $pdf 是 \tfpdf 的一个实例

$pdf->SetFont('Arial', 'B', 12);
$pdf->SetFillColor(211,211,211);
$pdf->SetTextColor(255,0,0);
$pdf->SetDrawColor(255,0,0);
$pdf->Cell(100, 0, 'Some Text', 'TB', 0, 'center', true);

与这个库相比,其中 $pdf 是 Pdf 的一个实例

$cell = new Cell();
$cell->fontFamily = 'Arial';
$cell->fontBold = true;
$cell->fontSize = 12;
$cell->fillColor = Color::fromColor(ColorsEnum::LIGHT_GRAY);
$cell->fontColor = Color::fromColor(ColorsEnum::RED);
$cell->drawColor = Color::fromColor(ColorsEnum::RED);
$cell->width = 100;
$cell->text = 'Some Text';
$cell->border(0,0,1,1); 
$cell->align = AlignEnum::CENTER;
$cell->ln = false;
$cell->fill = true;

$pdf->writeCell($cell);

一开始就清楚地知道单元格要输出的内容,以及样式将是什么。使用类方法和枚举消除了了解 tfpdf 期望其字符串参数是什么的需要。虽然新方法可能看起来设置起来更长,但在大型 PDF 中这实际上变得更少。如下所示

$cell = new Cell();
$cell->fontFamily = 'Arial';
$cell->fontSize = 12;
$cell->fillColor = Color::fromColor(ColorsEnum::LIGHT_GRAY);
$cell->align = AlignEnum::LEFT;
$cell->ln = false;
$cell->fill = true;

$writeCell = clone $cell;
$writeCell->width = 100;
$writeCell->text = 'Some Text';
$pdf->writeCell($writeCell);

$writeCell = clone $cell;
$writeCell->width = 50;
$writeCell->align = AlignEnum::RIGHT;
$writeCell->text = '$25.32';
$pdf->writeCell($writeCell);

我们可以这样设置一个模板单元格,以设置一些基本的样式属性,然后克隆它,只修改单元格之间的变化。这既提高了代码的清晰度,又使得在开始时设置模板样式变得容易,如果需要,可以轻松地更改它,而无需更改大量的 Set[property] 方法或 Cell 或 MultiCell 调用。一个调用同时执行 Cell 和 MultiCell 的功能,并以更一致的方式执行。

一些功能包括

  • 通过在 Cell 上设置 allowAutoWrap 属性,可以使输出更类似于 multicell。此外,您还可以设置 autoWrapLineHeight 属性以设置每行包裹的行高,以及 autoWrapMaxLines 或单元格高度以设置最大行数。

  • 当不执行包裹文本调用并设置 autoShrink 为 true 时,字体大小将减小以尝试将文本放入单元格中,直到 autoShrinkMinFontSize。

  • 使用 setRollbackPoint、rollbackTo 和 clearRollbackPoints 使用回滚点。

使用方法,创建一个 \Mgrn\Tfpdf\Pdf 对象的实例或扩展 \Mgrn\Tfpdf\Pdf 的类的实例。请参阅测试以了解如何使用此库以及您可以期待哪些输出。