html2pdf创建页面后断页
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了html2pdf创建页面后断页相关的知识,希望对你有一定的参考价值。
我想使用CSS属性“ page-break-after”创建新页面。我已经按照Page break in Html2Pdf给出的所有步骤进行操作,但出现以下错误。
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9FSXdTTy5wbmcifQ==” alt =“在此处输入图像描述”>
您可以看到...第二页从第一页的结尾处开始。我希望第二页从顶部开始。
<?
/*
Template Name: View Form
*/
include_once(ABSPATH."connection/localhost.php");
include_once(ABSPATH."include/cls_forms.php");
include_once(ABSPATH."include/cls_fields.php");
//Authenticate("U");
$oFields = new Fields;
$oForm = new Forms;
$Title = $oForm->getFormTitleByID($_GET['form_id']);
$Content = $oForm->getFormContentByID($_GET['form_id']);
$isPleading = $oForm->getFormTypeByID($_GET['form_id']);
$FieldValues = $oForm->getUserFormFields($_SESSION['user_id'], $_GET['distinct_id']);
foreach($FieldValues as $Name => $Value)
$Content = str_replace("«".$Name."»", "<b>".$Value."</b>", $Content);
function filterMsWord($Content)
$Content = preg_replace("<([A-Za-z0-9\/]*):([A-Za-z0-9-\"=: ]*)>", "", $Content);
$Content = str_replace("<>", "", $Content);
return $Content;
if ($_GET['type'] == 'doc')
$Content = str_replace("[---pagebreak---]", '<br clear=all style="mso-special-character:line-break; page-break-before:always">', $Content);
elseif ($_GET['type'] == 'pdf')
$Content = str_replace("[---pagebreak---]", "<div class='page-break-before'></div><div class='page-break'></div>", $Content);
else
$Content = str_replace("[---pagebreak---]", "<div class='page-break'></div>", $Content);
if ($_GET['type'] == 'doc')
header("Content-type: application/vnd.ms-word");
header("Content-Disposition: attachment;Filename=".$Title.".doc");
else if ($_GET['type'] == 'pdf')
require_once(ABSPATH.'pdf/html2pdf.class.php');
ob_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Preview Form</title>
<style>
.pleading-paper-size
width: 6.35in !important;
max-width: 8.5in !important;
<? if ($_GET['type'] != 'pdf' and $_GET['type'] != 'doc') ?>
background-image: url(../images/pleading.jpg);
background-position: -0.5in 0;
background-repeat: repeat-y;
<? ?>
padding-left: 1in !important;
padding-right: 1in !important;
<? if ($_GET['type'] != 'pdf') ?>
line-height: 0.3242in !important;
<? ?>
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
.normal
width: <? if (!isset($_GET['type'])) ?>6.0<? else if ($_GET['type'] == 'doc') ?>6.5<? else ?>5.0<? ?>in !important;
text-align: left;
.page-break
page-break-after: always;
page-break-inside: avoid;
clear:both;
page-break-before
page-break-before: always;
page-break-inside: avoid;
clear:both;
p, td
margin: 0 !important;
text-indent: 0 !important;
padding: 0 !important;
height: auto !important;
@media print
.pleading-paper-size
background-image: none;
</style>
<? if (isset($_GET['preview'])) ?>
<script language="javascript">
function clearData()
window.clipboardData.setData('text','')
function cldata()
if(clipboardData)
clipboardData.clearData();
setInterval("cldata();", 1000);
</script>
<? $Body = ' ondragstart="return false;" onselectstart="return false;" oncontextmenu="return false;" onload="clearData();" onblur="clearData();" style="background-image: url('.ABSPATH.'images/PREVIEW.png);"';
?>
</head>
<body <?=$Body?>>
<? if (isset($_GET['preview'])) ?>
<table class="<? if ($isPleading) ?>pleading-paper-size<? else ?>normal<? ?>" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><a href="javascript:void()" onclick="javascript: window.history.back()">
<input name="continue" type="button" value="Go Back" style="font-size:24px" />
</a> <a href="../addons/?distinct_id=<?=$_GET['distinct_id']?>">
<input name="continue" type="button" value="Continue to Next Step" style="font-size:24px" />
</a></td>
</tr>
<tr>
<td> </td>
</tr>
</table>
<? ?>
<div class="<? if ($isPleading) ?>pleading-paper-size<? else ?>normal<? ?>">
<?=filterMsWord($Content)?>
</div>
<? if (isset($_GET['preview'])) ?>
<table class="<? if ($isPleading) ?>pleading-paper-size<? else ?>normal<? ?>" border="0" cellspacing="0" cellpadding="0">
<tr>
<td> </td>
</tr>
<tr>
<td><a href="javascript:void()" onclick="javascript: window.history.back()">
<input name="continue" type="button" value="Go Back" style="font-size:24px" />
</a> <a href="../addons/?distinct_id=<?=$_GET['distinct_id']?>">
<input name="continue" type="button" value="Continue to Next Step" style="font-size:24px" />
</a></td>
</tr>
</table>
<? ?>
</body>
</html>
<?
if ($_GET['type'] == 'pdf')
try
$html = ob_get_contents();
ob_end_clean();
$html2pdf = new HTML2PDF('P', 'A4', 'en');
$html2pdf->pdf->SetDisplayMode('fullpage');
$html2pdf->writeHTML($html, isset($_GET['vuehtml']));
$html2pdf->Output($Title.'.pdf', 'D');
catch(HTML2PDF_exception $e)
echo $e;
exit;
?>
使用page标记。
例如
<page>
content here.
</page>
IN html2fpdf.php
搜索此:
switch($tag)
case 'PAGE_BREAK': //custom-tag
case 'NEWPAGE': //custom-tag
$this->blockjustfinished = true;
$this->AddPage();
break;
您看到可以使用<NEWPAGE>
标签定义新页面或分页符
我使用"<NEWPAGE>"
,它可以正常工作。
我使用'HTML2FPDF_VERSION','3.0(beta)'
如果您仍然想使用
<div style="page-break-after: always;"></div>
而不是
<page>
您还应该在$this->parsingCss->setPosition();
方法中添加_tag_close_DIV
:
protected function _tag_close_DIV($param, $other='div')
if($this->parsingCss->value['page-break-after'] == "always")
$this->_setNewPage(null, '', null, $this->_defaultTop);
$this->parsingCss->setPosition();
我也遇到了同样的问题,并且尝试过使用DIV标记同时使用page-break-before和page-break-after。在出现分页符之后,似乎HTML2pdf类没有重置下一行文本的垂直起始点。
示例代码:
(code for first page here)
// Supplement Schedule invoice page
$htmlfile[] = "<div style=\"page-break-before:always\"></div>";
$htmlfile[] = "<h1 style=\"text-align:center; margin-bottom:0; \">Supplement Estimate</h1>";
$htmlfile[] = "<h4 style=\"text-align:center; margin:0\">($visit->next_visit Weeks)</h4>";
[more code]
使用page标记插入分页符的示例代码:
(code for first page here)
// Supplement Schedule invoice page
$htmlfile[] = "<page>";
$htmlfile[] = "<h1 style=\"text-align:center; margin-bottom:0; \">Supplement Estimate</h1>";
$htmlfile[] = "<h4 style=\"text-align:center; margin:0\">($visit->next_visit Weeks)</h4>";
[more code/text on the page]
$htmlfile[] = "</page>";
考虑pagebreak: mode: 'avoid-all'
,下面是示例选项
var opt =
margin: 1, //top, left, buttom, right
filename: 'Initial_Contract.pdf',
image: type: 'jpeg', quality: 0.98 ,
html2canvas: scale:2 ,
jsPDF: unit: 'in', format: 'letter', orientation: 'portrait' ,
pagebreak: mode: 'avoid-all', after: '.avoidThisRow'
;
以上是关于html2pdf创建页面后断页的主要内容,如果未能解决你的问题,请参考以下文章
iText7高级教程之html2pdf——3.基于媒体查询生成PDF
iText7高级教程之html2pdf——3.基于媒体查询生成PDF
iText7高级教程之html2pdf——4.使用pdfHTML创建报告