2015-04-01 63 views
1

我正在使用mPDF类生成PDF,并想知道是否以及如何确定生成的mPDF文档中最后一行文本的位置?获取mPDF中文本的位置以确定HTML元素的垂直高度

我需要一个HTML框来覆盖最后一行文本和文档底部边距之间的任何剩余空间。通过将html元素设置为height:100%将元素推送到新页面并覆盖新页面的整个高度。

页面的内容是基于许多因素动态生成的,因此我无法确定最后一行的垂直位置。

如果我知道最后一行的垂直位置,我可以从总页高减去该值,然后通过CSS设置该元素具有该高度。

这是可能的还是有其他解决方案?

+1

我能问你用什么样的最后一行之间的剩余空间文本和底部边距为?如果它是背景图片或颜色或类似的东西,您是否可以重新放置您的元素,让背景始终(100%高度)和另一个放置在顶部的盒子? (覆盖背景框) – csilk 2015-04-14 04:00:26

+0

它是一个背景图像(一系列重复的行),所以你的想法听起来是最好的解决方案。我会尝试一下,希望我能够在CSS中工作。 – Martin 2015-04-14 21:20:11

回答

5

你可以使用这个目的“$ mpdf-> Y”(在用户单元当前位置的细胞定位):

$mpdf=new mPDF('', 'A4'); 
$mpdf->WriteHTML('Line1<pagebreak>Line2<br>Line3'); 
// 
$unusedSpaceH = $mpdf->h - $mpdf->y - $mpdf->bMargin; 
$unusedSpaceW = $mpdf->w - $mpdf->lMargin - $mpdf->rMargin; 
// 
$mpdf->Rect($mpdf->x, $mpdf->y, $unusedSpaceW, $unusedSpaceH); 
$mpdf->Output(); 
+0

似乎这是获得垂直位置的最准确方法。问题是我的所有输出都是使用HTML方法生成的,有时内容可能会出现在多个页面上。我需要能够填写最后一页的剩余空白。 – Martin 2015-04-15 10:05:35

+0

它正在为多个页面工作。在这个例子中它是两页文件。您可以看到mpdf 标记。 – voter 2015-04-15 11:02:14

+0

但是,在WriteHTML方法中包含的HTML代码中,我无法使用$ mpdf-> y。我的所有HTML都包含在这个方法中,我不能将它分成不同的部分,因为所有的HTML都是由我的MVC框架的函数呈现的。无论如何感谢 – Martin 2015-04-15 18:20:52