2013-06-27 2 views
1

Я хочу создать новую страницу, используя свойство css "page-break-after". Я выполнил все шаги, указанные на Page break in Html2Pdf, но получив следующую ошибку.html2pdf page-break-after создание проблемы

enter image description here enter image description here

Как вы можете видеть ... вторая страница, начиная с первой страницы, где закончилась .. Я хочу вторую страницу, чтобы начать сверху.

<? 
/* 
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

У меня такая же проблема, и попытался с помощью страниц обкатки перед тем как страница-обкатки после, как с помощью тега 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

haha ​​... ok ... пожалуйста, дайте мне знать, если ваша проблема решена ... –

1

В 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> 

вы должны также добавить $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(); 
     }