15

フロートを使用して、2つのdivを並べて配置しています。

<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(); ?>

これがprintboxの機能です。バッファリングされたデータをPDFにレンダリングするだけですが、どういうわけか、設定されたフロートはプロセスで失われました。

<?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でうまく動作します:

ここに画像の説明を入力してください

しかし、印刷をクリックすると、次のようになります。

ここに画像の説明を入力してください

問題が何であるかについて何か考えはありますか?

4

2 に答える 2

28

個人的な経験から言えば、出力のスタイリングHTML2PDFは、せいぜい、秘教的な黒魔術の科学だと思います。これの主な理由は次のとおりです。

  • このクラスは、CSSスタイルとセレクターの(比較的小さい)サブセットのみをサポートします
  • CSSの互換性は文書化されていません
  • HTML入力に関連してPDFをデバッグすることは不可能です

公平を期すために、これはの問題であるだけでなくHTML2PDF使用するの問題でもありTCPDFHTML2PDFます。

セットアップがほぼゼロで、迅速で簡単な代替インターフェースであるため、CSSサポートがさらに削減される可能性がありますが、適切にサポートされないことあると思います。HTML2PDFTCPDFTCPDFfloat

使用できる最善の回避策は、フローティングdivを90年代に送信することです。

<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>";
    }
?>
于 2012-01-23T08:21:33.530 に答える
8

ここでフランス語のクイックドキュメントをオンラインで見ることができます:http: //demo.html2pdf.fr/examples/pdf/about.pdf

('Lesfloatnesontgérésquepourlabalise IMG')

=フロートは、クラスによってimgマークアップに対してのみ処理されます。

処理されたcssプロパティもドキュメントにリストされています。

于 2013-09-13T09:06:31.783 に答える