2012-08-26 132 views
2

我很困惑。通過表格發送HTML代碼

我嘗試用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的形式之後,從用戶提交dinamically生成的頁面。這是一個報告頁面。用戶選擇他們想要的特定時間週期,頁面將顯示報告。

所以,我必須在用戶提交表單後得到生成的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... 
+0

你能告訴在用戶提交的是有$ _ POST [htmlx]值形式的代碼? – khaverim

+0

究竟是什麼顯示不正確?佈局或內容? –

+0

是的,佈局.. –

回答

0

更換

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

有:

$html = htmlentities($html); 

HTML不使用反斜線轉義,它使用實體代碼。

+0

謝謝。但我已經嘗試過,在我提交這個問題之前,它不工作。 –

0

我認爲問題是...

「display :;」

只要完全刪除。顯示應該默認爲至少會顯示textarea的東西。

0

你應該嘗試stripslashes(),爲我工作:

$mpdf->WriteHTML(stripslashes($htmlx));