Я пытаюсь создать файл PDF через mPDF
, где листы имеют следующую ориентацию:
___________
| 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
после оглавления, использование селектора @page
, как показано в этом примере
- Установка переменной
autoPageBreak
в false
в конструкторе mPDF
- Заворачивание страниц в
div
и возня с позицией <pagebreak>
Я использовал mPDF v6.0 и сейчас обновляюсь до mPDF v8.0.1. Эта проблема возникает во всех версиях (6, 7 и 8). В то время как в версии 6 я использовал хак, добавив $mpdf->DeletePages(2);
после $mpdf->WriteHTML($html);
, но это имеет две основные проблемы:
- Этот метод недокументирован и выглядит некорректно
- При этом номер страницы не соответствует правильным страницам, поэтому я не могу добавить номер страницы в нижний колонтитул
Есть ли способ сделать это без пустой страницы? Или жизнеспособный обходной путь?