1

I need to print an html table with row heights sets dynamically based on some values from the database using PHP. seems that html 5 doesn't support inline height and with tags and using css instead. My requirement is to generate an html file and then convert it into pdf using DOM pdf.

Please guide me how to set these parameters dynamically inline or using css or whether a library already available for the same purpose.

I Googled a lot, but unable find any results matching my requirement. Also am attaching final output format

(In answer column i printed some values which is the height required for each row)Sample Output

Thanks in advance

4

3 に答える 3

1

私がこの権利を理解していれば、テーブルの行は互いに異なるサイズにすることができますが、行ごとにデータベースにルールがあり、行のコンテンツの高さに関係なく、行の高さを設定しますよね? 次に、次のようなものを使用できます。

<html>
<head>
    <style>
        <?php foreach($yourRows as $key => $row) { ?>
            #row<?=$key;?>{
                height: <?=$row['height']; ?>px;
            }
        <?php } ?>
    </style>
</head>
<body>
    <table>
    <?php foreach($yourRows as $key => $row) { ?>
        <tr id="row<?=$key; ?>">
            ...
        </tr>
    <?php } ?>
    </table>
</body>

#row<?=$key;?>スタイルタグでは、「 」を「 」に#row<?=$key;?> td置き換えることができます

Updated

とにかく、インライン スタイリングを使用する場合は、次のようにします。

<html>
<body>
    <table>
        <?php foreach($yourRows as $row) { ?>
                <tr style="height:<?=$row['height']; ?>px">
                    Or you can apply height to td instead of the tr...
                </tr>
        <?php } ?>
    </table>
</body>

于 2013-08-05T06:51:34.197 に答える
1

ここで jQuery が機能する可能性があると思われる場合は、お勧めします。DOMPDF で動作するかどうかはわかりませんが、動的に CSS を作成しているので、DOM がロードされれば問題ないはずです。

各行の高さが正確にわかっている場合は、eqを使用して jQuery を使用してそれらを選択します。

$(document).ready(function() {
    $('table tr').eq(1).css({'height':'250'});
    $('table tr').eq(3).css({'height':'450'});
});

これがフィドルです。

そうすれば、出力を変更する必要はありませんが、コンテンツが固定の高さよりも高くなることはないと仮定する必要があります。

これをより動的にする必要がある場合は、クラスなどのように識別子を行に関連付ける必要があります。または、コンテンツにパターンがある場合は、コンテンツをスキャンしてそのように識別する正規表現を作成する必要があります。その後、jQuery を使用して一致したこれらの行に CSS ルールを適用できます。

編集

高さの値がデータベースに保存されている場合、少し誤解している可能性があります。また、インライン スタイルを使用できないことを既に判断しているようにも見えます。

これが私の次の提案です。

ループからテーブルを作成しているので、おそらく次のようになります。

foreach($rows as $row) {
  echo '<tr data-height="'.$row['height'].'"><td>...</td></tr>;
}

data-height="'.$row['height'].'"を追加すると、jQuery のデータを使用して取得できる値が得られます。

$(document).ready(function() {
    $('table tr').each(function() {
        var height = $(this).data('height');
        $(this).css({ 'height': height });
    });
});

これは、静的なデータの高さの値を使用したフィドルの例です。乗り方を教えてください。

于 2013-08-05T09:28:14.117 に答える