当内容达到一定宽度时,mPDF 会创建一个额外的空白页面。我怎样才能去掉多余的空白页?
mPDF creates an extra blank page when the content reaches a certain width. How can I get rid of the extra blank page?
我在使用 mpdf 时遇到了这个问题,如果某些文本到达页面的最后一行,它会创建一个额外的空白页面。
我已经尝试了一百万种方法,但似乎无法解决这个问题。我想要一个可靠的方法来确保我的 pdf 中没有空白页。
所以,我想知道是否有 {PAGEEND} 标签或我在 html 中放置的一些标签让 mPDF 知道这是页面的结尾并且在此之后不要创建页面页。我没有在文档中看到任何关于此的内容。
这是我的 mpdf 配置中的内容:
$mpdf = new \Mpdf\Mpdf([
'format' => 'A4',
'margin_left' => 0,
'margin_right' => 0,
'margin_top' => 6,
'margin_bottom' => 20,
'margin_header' => 5,
'margin_footer' => 5
]);
if ( isset( $_REQUEST['css_files'] ) ) {
$css_files = $_REQUEST['css_files'];
if ( is_array($css_files) ) {
foreach ( $_REQUEST['css_files'] as $cssurl ) {
$stylesheet = file_get_contents($cssurl);
$mpdf->WriteHTML($stylesheet,1);
}
}
}
$mpdf->useSubstitutions = false; // optional - just as an example
$mpdf->simpleTables = false;
$mpdf->SetAuthor("My Website");
$mpdf->SetDisplayMode('fullpage');
$mpdf->setAutoBottomMargin = 'stretch';
$mpdf->SetHTMLFooter('<div width="90%" align="right">{PAGENO}</div>');
$mpdf->setBasePath($url);
$mpdf->WriteHTML( $html );
$mpdf->Output($title . ".pdf", 'D'); exit;
我将 margin-bottom 设置为 20mm,这样内容就不会与我的页脚冲突。
css_files 是从我的模板接收到的数组。 css 文件是网站样式和打印样式表。我正在加载它们并将它们应用于页面。
我试过在我的 print.css 上洒满 page-break-after: avoid;
,但我仍然得到那个讨厌的额外空白页。
我也仔细检查并清除了所有额外的底部边距,但这似乎没有帮助。
经过几个小时的故障排除后,结果证明这是完全愚蠢的事情。
发生的事情是我的“打印为 pdf”按钮打印在第 4 页上。我看不到它,因为它在 pdf 中有白底白字。
直到我将生成的 pdf 共享到 Teams 中,我们才看到了文本。我们有一个条件,我们设置为从 pdf 中不需要的页面中删除 html。
请记住,带有打印为 pdf 按钮的表单被包裹在一个带有隐藏打印 class 的 div 中,按钮本身也有隐藏打印 class 就可以了。不知道为什么它没有在页面中的这个元素上选择那种风格。所以从代码中删除它是最好的选择。
我在使用 mpdf 时遇到了这个问题,如果某些文本到达页面的最后一行,它会创建一个额外的空白页面。
我已经尝试了一百万种方法,但似乎无法解决这个问题。我想要一个可靠的方法来确保我的 pdf 中没有空白页。
所以,我想知道是否有 {PAGEEND} 标签或我在 html 中放置的一些标签让 mPDF 知道这是页面的结尾并且在此之后不要创建页面页。我没有在文档中看到任何关于此的内容。
这是我的 mpdf 配置中的内容:
$mpdf = new \Mpdf\Mpdf([
'format' => 'A4',
'margin_left' => 0,
'margin_right' => 0,
'margin_top' => 6,
'margin_bottom' => 20,
'margin_header' => 5,
'margin_footer' => 5
]);
if ( isset( $_REQUEST['css_files'] ) ) {
$css_files = $_REQUEST['css_files'];
if ( is_array($css_files) ) {
foreach ( $_REQUEST['css_files'] as $cssurl ) {
$stylesheet = file_get_contents($cssurl);
$mpdf->WriteHTML($stylesheet,1);
}
}
}
$mpdf->useSubstitutions = false; // optional - just as an example
$mpdf->simpleTables = false;
$mpdf->SetAuthor("My Website");
$mpdf->SetDisplayMode('fullpage');
$mpdf->setAutoBottomMargin = 'stretch';
$mpdf->SetHTMLFooter('<div width="90%" align="right">{PAGENO}</div>');
$mpdf->setBasePath($url);
$mpdf->WriteHTML( $html );
$mpdf->Output($title . ".pdf", 'D'); exit;
我将 margin-bottom 设置为 20mm,这样内容就不会与我的页脚冲突。
css_files 是从我的模板接收到的数组。 css 文件是网站样式和打印样式表。我正在加载它们并将它们应用于页面。
我试过在我的 print.css 上洒满 page-break-after: avoid;
,但我仍然得到那个讨厌的额外空白页。
我也仔细检查并清除了所有额外的底部边距,但这似乎没有帮助。
经过几个小时的故障排除后,结果证明这是完全愚蠢的事情。
发生的事情是我的“打印为 pdf”按钮打印在第 4 页上。我看不到它,因为它在 pdf 中有白底白字。
直到我将生成的 pdf 共享到 Teams 中,我们才看到了文本。我们有一个条件,我们设置为从 pdf 中不需要的页面中删除 html。
请记住,带有打印为 pdf 按钮的表单被包裹在一个带有隐藏打印 class 的 div 中,按钮本身也有隐藏打印 class 就可以了。不知道为什么它没有在页面中的这个元素上选择那种风格。所以从代码中删除它是最好的选择。