2

我很困惑。

我尝试使用MPDF导出 html 页面。我看到了例子,如何使用它是这样的:

<?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()这样做,然后将其与表单一起发送到上面有 mpdf 脚本的 php 页面,比如 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正确显示页面!

我不明白为什么会发生这种情况。也许我不能通过 php 中的表单发送 html 代码?

我很抱歉我的英语不好。我确实希望你能理解我的问题并能解决帮助我解决它。谢谢你。

编辑:

这是我发送 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...
4

3 回答 3

0

你应该试试stripslashes(),为我工作:

$mpdf->WriteHTML( stripslashes($htmlx) );
于 2014-03-05T09:35:39.597 回答
0

我认为问题是...

“展示:;”

完全删除它。显示应默认为至少显示文本区域的内容。

于 2014-02-13T21:17:08.177 回答
0

代替

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

和:

$html = htmlentities($html);

HTML 不使用反斜杠进行转义,它使用实体代码。

于 2012-08-26T17:21:28.390 回答