FPDF附加“写Html表”,支持多单元格/单元格中有换行

时间:2018-07-24 16:49:03

标签: php pdf fpdf

我使用FPDF附加组件“ write-html-tables”。该插件在HTML表中的确很好用。

http://fpdf.de/downloads/add-ons/write-html-tables.html

但是我对换行有疑问。如果单元格的内容太长,则无法在单元格内换行,并且文本与下一个单元格重叠。

我试图从“ write-html-tables”附加组件扩展代码,但是它不起作用。有人给我个提示如何扩展附件吗?

1 个答案:

答案 0 :(得分:0)

FPDF附加Write-Html-Tables可能在表单元格中出现新行错误。我用\n<br>进行了检查-同样的错误。

推荐的解决方案

如果您使用HTML代码为使用FPDF库生成的PDF文档构建表格,那么我建议使用FPDF easyTable project (FPDF Add-on)

您必须从该项目下载easyTable.phpformatedstring.phpexfpdf.php,并将此文件保存在FPDF文件夹中。不要忘记删除PHP文件结尾?>之后的所有符号。

示例:

<?php
include 'fpdf.php';
include 'exfpdf.php';
include 'easyTable.php';

$pdf = new exFPDF();
$pdf->AddPage(); 
$pdf->SetFont('helvetica','',10);

$table = new easyTable($pdf, '%{70,30}', 'border:1');

$table->easyCell('If the content of a cell is too long, I can make a line break inside the cell and the text does not overlap the next cell.', 'colspan:2; bgcolor:#b3ccff');
$table->printRow();

$table->easyCell('If the content of a cell is too long, I can make a line break inside the cell and the text does not overlap the next cell.');
$table->easyCell('Some values 1');
$table->printRow();

//the next line is double quoted because new line(\n) should be interpreted
$table->easyCell("If the content of a cell is too long, I can make a line break inside the cell and\n\nthe text does not overlap the next cell.");
$table->easyCell('Some values 2');
$table->printRow();

$table->endTable(5);

$pdf->Output();
?>

输出示例作为屏幕截图的一部分:

fpdf easytable example

如果您要手动换行,则应在"周围使用双引号\n,而不要使用单引号'

来自docs

  

指定字符串的最简单方法是将其用单引号引起来   (字符')。

     

要指定文字单引号,请使用反斜杠(\)对其进行转义。   要指定文字反斜杠,请将其加倍(\\)。所有其他实例   的反斜杠将被视为文字反斜杠:这意味着   您可能习惯的其他转义序列,例如\r\n,   将按原样输出,而不是任何特殊的   意义。

如果字符串包含在双引号(")中,PHP将解释[转义序列,例如\n]。