2013-06-27 53 views
1

我想使用css屬性「page-break-after」創建新頁面。我已按照Page break in Html2Pdf上的所有步驟進行了處理,但遇到了以下錯誤。html2pdf頁面中斷創建問題

enter image description here enter image description here

正如你可以看到... ...第2頁是從哪裏結束第一頁..我想第2頁從頂部開始啓動。

<? 
/* 
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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;</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>&nbsp;</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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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; 
    } 
} 
?> 
+0

你可以分享你的PHP代碼 – Naeem

+0

我用php代碼更新了我的問題 –

+0

$ _GET ['vuehtml']包含所有html?那你爲什麼不使用DOM對象,解釋一下。 – Naeem

回答

0

我遇到了同樣的問題,並嘗試使用page-break-before以及page-break-after,都使用DIV標記。看起來,在分頁符發生之後,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] 

使用標籤插入分頁符示例代碼:

(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>"; 
+0

不,這沒有解決我的問題 –

+0

是的,我知道。我試着讓你知道我和你一樣,並且讓你知道我曾經嘗試過什麼。我寫信給開發者,但還沒有回覆。 – Jimbo

+0

哈哈......好的......請讓我知道你的問題是否已解決...... –

1

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)'

5

使用標籤。

ex。

<page> 
content here. 
</page> 
+1

請記住,您必須在每個「」內重新定義「page_header」和「page_footer」。 – naitsirch

1

如果你仍然想使用

<div style="page-break-after: always;"></div> 

,而不是

<page> 

,你也應該在_tag_close_DIV方法添加$this->parsingCss->setPosition();

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(); 
     }