Html DOMPDF如何使PDF高度自动

Html DOMPDF如何使PDF高度自动,html,css,pdf,height,dompdf,Html,Css,Pdf,Height,Dompdf,恐怕这个问题没有答案,但它来了 我想做的是让人们在我的网站上填写关于他们自己的各种信息,并在HTML模板文件(稍后转换为PDF)中回显所有信息。由于所有用户都有不同数量的条目和条目长度,因此不可能预测文档的最终结果高度 换句话说:用户提供的关于自己的信息越多,文档的大小就越大。并且没有办法设置DOMPDF来根据HTML模板的最终结果生成PDF高度 我是不是错过了一个解决方案?没有一个内置的方法可以做到这一点,但这并不意味着这是不可能的。你碰巧是第二个问这个问题的人,那是我第一次设法想出一个办法

恐怕这个问题没有答案,但它来了

我想做的是让人们在我的网站上填写关于他们自己的各种信息,并在HTML模板文件(稍后转换为PDF)中回显所有信息。由于所有用户都有不同数量的条目和条目长度,因此不可能预测文档的最终结果高度

换句话说:用户提供的关于自己的信息越多,文档的大小就越大。并且没有办法设置DOMPDF来根据HTML模板的最终结果生成PDF高度


我是不是错过了一个解决方案?

没有一个内置的方法可以做到这一点,但这并不意味着这是不可能的。你碰巧是第二个问这个问题的人,那是我第一次设法想出一个办法

以下内容来源于网站上的一篇原创文章


首先,您需要对文档的样式表做一个小的修改。您希望将顶部和底部页边距设置为零,这样它们就不会添加到高度计算中。因此,在第一遍HTML中添加以下附加样式声明:

@page { margin-top: 0px; margin-bottom: 0px; }
接下来,您必须确定最佳的首次通过文档大小。我使用的是一个简单的文档,所以我使用了一个简单的8cm x 8cm页面大小。您可能希望使用更大的高度来避免任何与分页相关的错误。8厘米约为226.77磅。因此,我设置了第一个过程,以使用具有适当维度的文档:

$dompdf = new DOMPDF( );
$dompdf->set_paper( array( 0 , 0 , 226.77 , 226.77 ) );
$dompdf->load_html( $first_pass_html );
$dompdf->render( );
然后,我们获得此过程产生的页数,并取消设置$dompdf变量,以便进行第二次过程:

$page_count = $dompdf->get_canvas( )->get_page_number( );
unset( $dompdf );
最后,使用从第一遍使用的页高乘以生成的页数计算的页高(加上一点额外的填充以容纳边距),再次呈现文档


我相信这不太管用。因为这种方法有点“捕捉网格”,缺少更好的术语。我需要它精确到像素级。我非常感谢你非常详细的回答:)是的,对不起。这绝对不会给你一个完美的像素大小。在某个时候,我会花点时间找出如何提取当前位置。@BrianS我很想知道在加载一些html以实现自动高度功能后如何找出位置。如果你有机会了解这一点,请张贴在这里。目前,由于这个限制,我们不能使用domPdf,我们使用mPdf,您可以实现自动高度()。谢谢,汉内斯
$dompdf = new DOMPDF( );
$dompdf->set_paper( array( 0 , 0 , 226.77 , 226.77 * $page_count + 20 ) );
$dompdf->load_html( $original_html );
$dompdf->render( );
$dompdf->stream( 'sample.pdf' , array( 'Attachment' => 0 ) );