2012-01-08 9 views
12

私は浮動小数点数を使って2つのdivを互いに並べて配置しています。ここでhtml2pdfのCSS浮動小数点数の使用

<a href="printbox.php">print</a> 
<?php ob_start(); ?> 
<style> 
    #sidedish{ 
     float: left; 

     border: 1px solid black; 
     width: 100px; 
     height: 100px; 
    } 
    #maindish{ 
     float: right; 
     width: 200px; 
     border: 1px solid black; 
     height: 100px; 
     text-align: center; 
    } 

    #container{ 
     width: 304px; 
     height: 100px; 
     border: 1px solid black; 
    } 
</style> 

<div id="container"> 
<div id="sidedish"></div> 
<div id="maindish"><div id="box">name</div></div> 
</div> 
<?php $_SESSION['boxes'] = ob_get_contents(); ?> 

は、それだけでPDFにバッファされたデータをレンダリングしますが、設定された何とか山車がプロセスで失われたものを行うprintboxです。

<?php require_once('html2pdf/html2pdf.class.php'); ?> 
<?php 
$html2pdf = new HTML2PDF('P', 'A4', 'en', true, 'UTF-8', array(0, 0, 0, 0)); 
$html2pdf->writeHTML($_SESSION['boxes']); 

$html2pdf->Output('random.pdf'); 
?> 

は、HTML上で正常に動作します:

enter image description here

が、私は、印刷をクリックしたときに、これに変わる:問題は何であるか

enter image description here

任意のアイデアを?

+1

上記の問題が見つかりません。 http://jsfiddle.net/DYGvR/show/を参照してください。クロムでテストします。マウスを右クリックして、ページを印刷します。 – Giberno

+0

ブラウザを使用して印刷していますか? printbox.phpは何をしますか?私は彼が印刷リンクをクリックしていると仮定しており、printbox.phpは何とか文書の幅を設定しています。 – zethus

+0

私の更新を参照してください –

答えて

23

個人的な経験から言えば、私はHTML2PDFの出力をスタイリングすることはせいぜい難解な黒い魔法の科学だと言います。この主な理由は以下のとおりです。CSSの互換性が文書化されていません

  • クラスは唯一のCSSスタイルの(比較的小さな)サブセットをサポートし&セレクタ
  • PDFは、HTML入力に関連してデバッグすることは不可能である

これは公正であるため、HTML2PDFではなく、also for the TCPDF that HTML2PDF usesの問題です。

それはHTML2PDFは、ちょうどほとんどゼロセットアップ、TCPDFのための迅速&簡単な代替インタフェースは、より多くのCSSのサポートをカットされている可能性があるかもしれない - しかし、私はTCPDFをサポートしていないだろうと確信していますfloatが正しくです。

あなたが使用できる最善の回避策は九十年代にあなたの浮動divを送信することです:

<table> 
    <tr> 
     <td><div class="float"> ... </div></td> 
     <td><div class="float"> ... </div></td> 
    </tr> 
</table> 

また、公共のHTMLからこの恥ずかしさを隠すことができます:

<?php 
    $isPdf = (/* condition that tells us we're outputting PDF */) ? true : false; 
    if ($isPdf) { 
     echo "<table><tr><td>"; 
    } 
?> 
<div class="float"> ... </div> 
<?php 
    if ($isPdf) { 
     echo "</td><td>"; 
    } 
?> 
<div class="float"> ... </div> 
<?php 
    if ($isPdf) { 
     echo "</td></tr></table>"; 
    } 
?> 
+1

これは、CSSの回避策を見つけようとして髪を切り取った後、私にとって非常に役に立ちました。テーブルに戻る!また、fyi、私は完全に別のページを作成しました。もしPDFの場合は、そこに直接行ってください。そうでない場合は、非テーブルにダイレクトしてください。 – Cyprus106

+2

私は同じ問題を抱えていました。私の解決策は浮動小数点数の代わりに絶対配置を使用することでしたが、うまくいきましたが、コンテナの寸法を設定する必要があります。 – TheFrozenOne

+0

実際には、HTML2PDFは絶対位置、余白、パディングなど、TCPDFよりもはるかに多くのCSSをサポートしています。言及に値する。 –

6

あなたは見ることができます http://demo.html2pdf.fr/examples/pdf/about.pdf

(フランス語でのオンラインでの迅速なドキュメント)

= 浮動小数点数は、クラスによってimgマークアップの場合にのみ処理されます。

処理されたCSSのプロパティもドキュメントに記載されています。

関連する問題