TCPDF - 以两列布局循环数据

时间:2015-05-31 12:06:37

标签: php foreach tcpdf

我正在使用TCPDF,目前使用def firstAndLast(x): if x: value = x[0] if len(x)>1: value += x[-1] return value return 0 在两列中列出数据,效果很好。但我需要在第一列中显示数据,然后在第二列中显示数据,请参见下文:

array_chunk

这是代码:

Currently:
    1   2
    3   4
    5   6
    7   8
    9   10
Should be:
    1   6
    2   7
    3   8
    4   9
    5   10

我的第二个查询(复杂)如果有超过30行,我需要能够使用$ pdf-> AddPage();并继续下一页。

2 个答案:

答案 0 :(得分:3)

TCPDF - 支持多列,这是我用来解决我的问题:

$pdf->AddPage();
$pdf->resetColumns();
$pdf->setEqualColumns(2, 84);  // KEY PART -  number of cols and width
$pdf->selectColumn();               
$content =' loop content here';
$pdf->writeHTML($content, true, false, true, false);
$pdf->resetColumns()

代码将添加自动分页并继续到下一页。

答案 1 :(得分:0)

我暂时没有使用PHP,所以我会让你编写代码,但希望这可以帮助你解决这个问题。

我认为秒问题是最容易的问题:每页只能有30行。由于每行有2个项目,这意味着每页有60个项目。因此,简单地将数组拆分为每个数组60个项目的数组,如下所示,伪代码:

items = [1, 2, 3, ...] // an array of items
pages = []
i = 0
while 60 * i < items.length
    pages[i] = items.slice(i * 60, (i + 1) * 60)
    i = i + 1

第二个问题是:您希望每列创建输出列,但HTML要求您每行输出一行。因此,在我们输出行之前,我们必须知道我们想要输出多少行:

items = [1, 2, 3, ...] // an array of items
rows = items.length / 2 // The number of rows, make sure you round this right in PHP
n = 0
while n < rows
    // The n:th item of the first column
    print items[n]
    // the n:th item of the second column
    print items[rows + n]
    print "\n"
    n = n + 1

在您的代码中,您可能必须检查项目[rows + i]是否存在等。还要确保奇数的舍入按照您期望的方式运行。