Отправить HTML-код через форму

Я в замешательстве.

Я пытаюсь экспортировать html-страницу с помощью MPDF. я вижу примеры, и как их использовать, вот так:

<?php    
$html = '
<h1><a name="top"></a>mPDF</h1>
<p>P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. </p>';

include("../mpdf.php");

$mpdf=new mPDF(); 

$mpdf->WriteHTML($html);
$mpdf->Output();
exit;
?>

Итак, мне нужно поместить html-код в переменную, тогда класс mpdf сгенерирует файл pdf.

У меня такая проблема:

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

Итак, я должен получить сгенерированный html-код после того, как пользователь отправит форму. Я использую ob_get_contents() для этого, а затем отправляю его с формой на страницу php, на которой есть сценарий mpdf выше, скажем, pdf.php.

Вот мой код в pdf.php:

<?php
include("../mpdf.php");

$mpdf=new mPDF(); 


$htmlx = "$_POST[htmlx]";
$mpdf->WriteHTML($htmlx);
$mpdf->Output();
exit;
?>

pdf создан, но он не отображается правильно, как должен (созданный pdf не отображает html-страницу правильно).

я думаю, что, возможно, сгенерированный HTML-код неверен, и mpdf не понимает HTML-код. поэтому я пытаюсь так:

Я попытался скопировать сгенерированный html-код и создать php-страницу, как в приведенном выше примере. Сгенерированный PDF-файл правильно отображает страницу!

Я не понимаю, почему это могло произойти. Может быть, я не могу отправить html-код через форму в php?

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

РЕДАКТИРОВАТЬ:

Вот моя форма для отправки html-кода:

<?php
$html = ob_get_contents();
$html = str_replace('"','\"',$html);

?>
<form action="pdf.php" method="POST" enctype="multipart/form-data">
    <input type="submit" value="Print to PDF">
    <textarea name="htmlx" style="display:; width: 100%; height:300px;" readonly><?= $html ?></textarea>
</form>

РЕДАКТИРОВАТЬ

это пример моего сгенерированного html:

<style>
*{
    font-family: arial;
}
body{
    background: #fff;
}
table#myTable{
    border:solid 7px #eee;
    -moz-border-radius: 7px;
    -webkit-border-radius: 7px;
    -khtml-border-radius: 7px;
    border-radius: 7px;
    behavior: url(/files/border-radius.htc);
}
#myTable th{
    font: normal 11pt 'century gothic';
    cursor:pointer;
    background: #ccc;
    padding: 8px 15px 8px 15px;
    color:#000
}
#myTable th.header {
    padding: 8px 15px 8px 15px;
    background: #eee;
    cursor: pointer;
    font-weight: bold;
    background-repeat: no-repeat; 
    background-position: center right;
    padding-right: 20px;
    margin-left: -1px;
    color:#fff
}
#myTable th.headerSortUp {
    background-image: url(/template/default/images/asc.gif);
    background-color: #eee;
    color:#fff
}
#myTable th.headerSortDown {
    background-image: url(/template/default/images/desc.gif);
    background-color: #eee;
    color:#fff
}
#myTable tr {
    border:solid 1px #3e6189;
}
#myTable td {
    background:#f9f9f9;
    padding: 8px 15px 8px 15px;
    border:solid 1px #f0f0f0;
    font-size: 9pt
}
@media print
  {
  .blabla{
    display:none;
  }
  }
</style>



</head>

<body>
<script>
function printPage() { print(); }
</script>

    <table cellpadding="3" cellspacing="1" border="0" width="100%" id="myTable">
        <tr class="bgTransUng25">
            <th width="5">No</th>
            <th width="70">Pembelian</th>
            <th width="100">Oleh</th>
            <th width="70">Tanggal</th>
            <th width="">Detail Pembelian</th>
            <th width="70">Paket Pengiriman</th>
        </tr>
            <tr class="bgTransWht71" align="center">
            <td align="right">1.</td>
            <td>00122</td>
            <td>Iko Uwais</td>
            <td align="right">2 Jul 2012</td>
            <td>

                <table cellpadding="3" cellspacing="1" border="0" width="100%">
                                    <tr class="bgTransWht25" align="center">
                        <td align="left">Kaos BW 9500 003</td>
                        <td align="right" width="70">3  pcs</td>
                        <td width="100"><div style="text-align:left">Rp.<div style="float:right; text-align:right">285.000</div></div></td>
                    </tr>
                                        <tr class="bgTransWht25" align="center">
                        <td align="left">Kaos BW 9500 003</td>
                        <td align="right" width="70">7  pcs</td>
                        <td width="100"><div style="text-align:left">Rp.<div style="float:right; text-align:right">665.000</div></div></td>
                    </tr>
                                        <tr class="bgTransWht25" align="center">
//and so on...

person Tikas Mamed    schedule 26.08.2012    source источник
comment
Можете ли вы показать код, в котором пользователь отправляет форму со значением $_POST[htmlx]?   -  person khaverim    schedule 26.08.2012
comment
Что именно не правильно отображается? Оформление или содержание?   -  person Dirk McQuickly    schedule 26.08.2012
comment
у меня есть таблица внутри страницы, и она не отображается правильно. Я подумал, что, возможно, мне нужно избегать двойной или одинарной кавычки. вот почему есть str_replace. но это не так.   -  person Tikas Mamed    schedule 26.08.2012
comment
Как вы устанавливаете макет для своей таблицы, встроенный или с помощью CSS. Может быть, выложите пример HTML для таблицы (или часть, если она большая)?   -  person Dirk McQuickly    schedule 26.08.2012
comment
я отредактировал свой вопрос. но я думаю проблема не в html. потому что, когда я делаю php-файл, как в примере в первом моем вопросе, внутри $html есть сгенерированный html-код, он сработал. макет отображается правильно.   -  person Tikas Mamed    schedule 26.08.2012
comment
@TikasMamed, спасибо за HTML-код. Пожалуйста, объясните, что не так в макете в PDF? Ширина таблицы, ячеек, вложенной таблицы, границ, углов....   -  person Dirk McQuickly    schedule 26.08.2012
comment
я просто пытаюсь добавить изображение, но мне не разрешено размещать изображение, так как моя репутация ниже десяти: D   -  person Tikas Mamed    schedule 26.08.2012
comment
Можешь кинуть ссылку на картинку?   -  person Dirk McQuickly    schedule 26.08.2012


Ответы (3)


Заменять

$html = str_replace('"','\"',$html);

с:

$html = htmlentities($html);

HTML не использует обратную косую черту для экранирования, он использует коды сущностей.

person Barmar    schedule 26.08.2012
comment
благодарю вас. но я тоже пробовал это, прежде чем отправить этот вопрос здесь, и это не работает. - person Tikas Mamed; 26.08.2012

Я думаю проблема в...

"отображать:;"

Просто уберите это вообще. Дисплей должен по умолчанию показывать что-то, что по крайней мере покажет текстовую область.

person IP BG    schedule 13.02.2014

Вы должны попробовать stripslashes(), у меня сработало:

$mpdf->WriteHTML( stripslashes($htmlx) );
person alexej_d    schedule 05.03.2014