【问题标题】:mPDF - get position of elementmPDF - 获取元素的位置
【发布时间】:2015-05-12 09:39:11
【问题描述】:

我可以获取页面上元素的当前位置 (x,y) 吗?

例如,我有这个:

$mpdf = new mPDF('', 'A4', 9, 'Arial', 7, 7, 8, 18, 0, 6);

$mpdf->WriteHTML('<div id="audit_list"><table>');

$mpdf->WriteHTML('<tr><td>Text 1</td></tr>');
var_dump($mpdf->y); // otput 8

$mpdf->WriteHTML('<tr><td>Text 2</td></tr>');
var_dump($mpdf->y); // otput 8

$mpdf->WriteHTML('<tr><td>Text 3</td></tr>');
var_dump($mpdf->y); // otput 8

$mpdf->WriteHTML('<tr><td>Text 4</td></tr>');
var_dump($mpdf->y); // otput 8

$mpdf->WriteHTML('</table></div>');
var_dump($mpdf->y); // otput 28.425833333333

为什么表格元素&lt;tr&gt;&lt;td&gt;的输出总是8?

非常感谢。

【问题讨论】:

    标签: php pdf mpdf


    【解决方案1】:

    $mpdf-&gt;x

    $mpdf-&gt;y

    X = 水平,Y = 垂直

    如果您有旧版本的 MPDF,您也可以使用内置方法使代码更清晰:

    $mpdf-&gt;GetX() $mpdf-&gt;GetY()

    【讨论】:

    • $mpdf->y 返回给我的数字仍然相同。 // 8
    • 你能说清楚点吗?不理解问题:)
    • 如果我使用变量($pos = $mpdf->y),那么循环foreach中的变量“$pos”具有相同的值。在这种情况下,值为“8”。
    • 更新您的原始帖子,我会修复代码;)
    • 原帖已修复:)
    【解决方案2】:

    如果有人仍然发现这个问题: mPDF 仅在块级元素关闭后更新 -&gt;y(就像 Web 浏览器一样),所以 mpdf-&gt;y 保持在页边距定义的初始 8 直到完整的块级元素被渲染在最后一个关闭标签之后。

    如果您需要获得中间 y 位置,最好的办法是克隆 mPDF 对象并执行以下操作:

    $my_mpdf_clone->WriteHTML('</table></div>');
    var_dump($my_mpdf_clone->y);
    unset($my_mpdf_clone);
    

    更新:另请注意,具有 CSS position:absolute 或 position:fixed 的元素永远不会更新 mPDF 的 x/y 光标。如果您需要(暂时)获取这些元素的宽度/高度,请先将样式设置为position:initial

    这是一个获取 html 块的宽度/高度的示例片段:

    // $mpdf should be initialized with CSS file
    // deep clone, we need a completely independent copy:
    $mpdf_sizeworker=unserialize(serialize($mpdf));
    $mpdf_sizeworker->setX(0); 
    $mpdf_sizeworker->setY(0); 
    // Make sure $html has all block level elements closed
    $mpdf_sizeworker->WriteHTML($html, \Mpdf\HTMLParserMode::HTML_BODY, true, true); // init:true close:true
    $html_width=$mpdf_sizeworker->x;
    $html_height=$mpdf_sizeworker->y;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-26
      • 2015-06-06
      • 1970-01-01
      • 2011-10-23
      • 1970-01-01
      • 2013-04-20
      • 2015-07-17
      相关资源
      最近更新 更多