我正在尝试通过工作mPDF表具有以下方向的位置创建 PDF 文件:
___________
| Page 1 |
| |
| Portrait |
| |
___________
___________
| Page 2 |
| TOC |
| Portrait |
| |
___________
__________________
| Page 3 |
| Landscape |
| |
__________________
___________
| Page 4 |
| |
| Portrait |
| |
___________
但是,更改第 3 页的方向会使 mPDF 在第 2 页 (TOC) 和第 3 页之间创建一个空白页。
PDF 以 HTML 格式创建,然后处理为 mPDF。代码如下:
HTML:
<html>
<head>
<style>
@page page-landscape { size: landscape; }
@page page-portrait { size: portrait; }
div.landscape {
page: page-landscape;
}
div.portrait {
page: page-portrait;
}
</style>
</head>
<body>
<div>
<div>First page - displayed Portrait. The second page should be the TOC (portrait) and the 3rd should be on landscape</div>
</div>
<tocpagebreak />
<div class="landscape">
<bookmark content="TOC entry" level="0"/>
<tocentry content="TOC entry" level="0"/>
<p>TOC entry - Shouldn\'t have a empty page before</p>
</div>
<div class="portrait">
another page
</div>
</body>
</html>
PHP
$mpdf = new \Mpdf\Mpdf();
$mpdf->WriteHTML($html);
$mpdf->Output();
我已经尝试了很多方法来完成这项工作,但没有成功。我将列出其中一些:
使用toc-selector="page-portrait"
的<tocpagebreak>
标签
使用toc-orientation="P"
的<tocpagebreak>
标签
在<pagebreak orientation="L" />
后面加一个<tocpagebreak>
使用class="landscape"
在div
所述TOC后,使用所述@page
选择器,如本例所示
变量设置autoPageBreak
到false
上MPDF的构造
将页面包裹起来div
并弄乱位置<pagebreak>
我使用的是 mPDF v6.0,现在我正在更新到 mPDF v8.0.1。此问题发生在所有版本(6、7 和 8)上。在第 6 版中,我通过添加$mpdf->DeletePages(2);
after使用了 hack,$mpdf->WriteHTML($html);
但这有两个主要问题:
这种方法没有记录,似乎有问题
有了这个,页码与正确的页面不匹配,所以我无法在页脚上添加页码
有没有办法在没有空白页的情况下完成此操作?还是可行的解决方法?
侃侃无极