Hello,
Please note that the samples detailed on the documentation pages are fully tested and working:
page-break-inside and page-break-after styles are available in paragraphs (https://www.phpdocx.com/htmlapi-documentation/html-standard/insert-paragraph-text-Word-document-with-HTML) (and other elements that generate paragraph contents such as headings or list items).
A sample using page-break-inside and page-break-after styles in a table using inline styles:
$html = '
<table border="1" style="border-collapse: collapse" width="600">
<tbody>
<tr width="600">
<td><p style="page-break-inside: avoid; page-break-after: avoid;">1_1</p></td>
<td rowspan="3" colspan="2"><p style="page-break-inside: avoid; page-break-after: avoid;">1_2</p></td>
</tr>
<tr width="600">
<td><p style="page-break-inside: avoid; page-break-after: avoid;">Some random text.</p></td>
</tr>
<tr width="600">
<td>
<ul>
<li style="page-break-inside: avoid; page-break-after: avoid;">One</li>
<li style="page-break-inside: avoid; page-break-after: avoid;">Two <b>and a half</b></li>
</ul>
</td>
</tr>
<tr width="600">
<td><p style="page-break-inside: avoid; page-break-after: avoid;">3_2</p></td>
<td><p style="page-break-inside: avoid; page-break-after: avoid;">3_3</p></td>
<td><p style="page-break-inside: avoid; page-break-after: avoid;">3_3</p></td>
</tr>
</tbody>
</table>';
$docx->embedHTML($html);
The same sample using a style tag:
$html = '
<style>
table p, table li {
page-break-inside: avoid;
page-break-after: avoid;
}
</style>
<table border="1" style="border-collapse: collapse" width="600">
<tbody>
<tr width="600">
<td><p>1_1</p></td>
<td rowspan="3" colspan="2"><p>1_2</p></td>
</tr>
<tr width="600">
<td><p>Some random text.</p></td>
</tr>
<tr width="600">
<td>
<ul>
<li>One</li>
<li>Two <b>and a half</b></li>
</ul>
</td>
</tr>
<tr width="600">
<td><p>3_2</p></td>
<td><p>3_3</p></td>
<td><p>3_3</p></td>
</tr>
</tbody>
</table>';
$docx->embedHTML($html);
A sample using page-break-inside and page-break-after styles in paragraphs using inline styles:
$html = '
<p>A content (no page break style)</p>
<p style="page-break-inside: avoid; page-break-after: avoid;">Some text</p>
<ol>
<li style="page-break-inside: avoid; page-break-after: avoid;">Item 1</li>
<li style="page-break-inside: avoid; page-break-after: avoid;">Item 2</li>
</ol>
<p>More content (the page-break-after from the previous li tag is applied to this content)</p>
<p>End content (no page break style)</p>
';
$docx->embedHTML($html);
The same sample using a style tag:
$html = '
<style>
.avoidpb, ol > li {
page-break-inside: avoid; page-break-after: avoid;
}
</style>
<p>A content (no page break style)</p>
<p class="avoidpb">Some text</p>
<ol>
<li>Item 1</li>
<li>Item 2</li>
</ol>
<p>More content (the page-break-after from the previous li tag is applied to this content)</p>
<p>Other content (no page break style)</p>
';
$docx->embedHTML($html);
A similar sample using paragraphs and a h2 tag:
$html = '
<style>
h2, .avoidpb {
page-break-inside: avoid; page-break-after: avoid;
}
</style>
<p>A content (no page break style)</p>
<h2>Heading content</h2>
<p class="avoidpb">Content 1</p>
<p class="avoidpb">Content 2</p>
<p class="avoidpb">Content 3</p>
<p>More content (the page-break-after from the previous li tag is applied to this content)</p>
<p>Other content (no page break style)</p>
';
$docx->embedHTML($html);
All these samples are fully tested and working correctly.
Please note the following about using keep styles:
For further support, please post or send to contact[at]phpdocx.com the simplest code that illustrates your issue and we'll check it.
Regards.