0

PHP を使い始めたばかりで、ページの結果を正しく印刷するのに問題があります。index.php から以下のページを呼び出します。このページをモニターに表示した場合は問題ないように見えますが、ページを印刷すると複数ページになり、ページの最後のセクションが途切れて 2 ページ目に続きます。ページを印刷したときに、セクション (各項目番号) がそのページのセクション全体 (修理の説明、一般的な原因など) に収まるかどうかを確認する方法を探しています。そうでない場合は、次のページに印刷します。

CSSファイルも入れました。基本的には、ページの幅をレター サイズの用紙に合わせます。前もって感謝します。

 <?php include_once $_SERVER['DOCUMENT_ROOT'] .
    '/fms/includes/helpers.inc.php'; ?>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Print Repair Form</title>
  <link rel='stylesheet' type='text/css' href='/fms/css/letter-size.css' />
</head>
<body>
  <div id="page-wrap">
    <table>
    <tr>
          <td rowspan = "3" id="logo"><a href="/fms/"><img src="/fms/images/flex_no_address_256.jpg" /></a></td>
      <td rowspan = "3" id="address">Address<br />
        City, State Zipcode <br />
        Phone number <br />
        website address
      </td>
      <td>
        <table>
        <tr>
              <td id="repairinfo" class="theading" colspan = "2">Repair Detail</td>
        </tr>
        <tr>
          <td><?php htmlout($custno); ?></td>
          <td width="100px">WO: <?php htmlout($wonum); ?></td>
        </tr>
        <tr>
          <td><?php htmlout($custname); ?></td>
          <td></td>
        </tr>
         </table>
      </td>
    </tr>
     </table>
     <br />
     <?php foreach($items as $item): ?>
     <table border ="1">
    <tr>
      <td class="theading">Type of Repair</td>
          <td class="theading">Repair ID</td>
      <td class="theading">Fault Picture</td>
    </tr>
    <tr>
      <td class="tablepadding"><?php htmlout($item['repairtype']); ?></td>
      <td class="tablepadding"><?php htmlout($item['itemno']); ?></td>
      <td rowspan="7" align="center">
          <img src="/fms/images/wo_items/<?php htmlout($item['filename']); ?>"          width="256" />
      </td>
    </tr>
    <tr>
      <td class="theading" colspan="2">Repair Description</td>
    </tr>
    <tr>
      <td class="tablepadding" colspan="2"><?php htmlout($item['repairdesc']); ?>
      </td>
    </tr>
    <tr>
      <td class="theading" colspan="2">Common Causes</td>
    </tr>
    <tr>
      <td class="tablepadding" colspan="2"><?php htmlout($item['commoncause']); ?>
      </td>
    </tr>
    <tr>
      <td class="theading" colspan="2">Preventive Measures and Maintenance</td>
    </tr>
    <tr>
      <td class="tablepadding" colspan="2"><?php htmlout($item['maintenance']); ?>
      </td>
    </tr>
      </table>
      <br />
      <?php endforeach; ?>
    </div>
</body>
</html>

CSS:

* { margin: 0; padding: 0;}
body {
    font: 12px/1.4 Georgia, serif;
}

a img {
  border: none;
}
#page-wrap {
    width: 800px;
    margin: 0 auto;
}

table {
    width:100%;
}

#logo {
    width: 256px;
}

#address {
    width: 170px;
}

#repairinfo {
    border-bottom: solid 1px;
    text-align: center;
}

.theading {
  font-weight: bold;
  padding: 3px;
}

table tr td.tablepadding {
  padding: 3px;
}
4

2 に答える 2

0

問題は PHP ではなく、CSS にあります。これはコンピュータ モニタのスタイルとは異なるため、印刷固有のスタイルシートを含める必要があります。

これは、印刷 CSS に関する優れたブログ投稿です http://www.webcredible.co.uk/user-friendly-resources/css/print-stylesheet.shtml

あなたのHTMLでは、印刷スタイルシート<link>要素にはmedia="print"属性が必要です

次に、印刷スタイルシートで幅を指定できます

于 2012-11-20T14:38:34.377 に答える
0

これは CSS を使用し、PHP を使用せずに実現する必要がありますが、PHP を使用することもできますが、css メディアには google を使用することもできます。

印刷の CSS にはいくつかのトリックがあります: http://slodive.com/web-development/css-print-page-tricks/

私は印刷物をあまり扱っていないため、具体的な詳細を説明することはできませんが、紙に収まる高さの合計をテストし、php (おそらく行?) で測定値を探すことになるので、サイズが大きい場合設定したものよりも、別のテーブルを作成します。

要素 (テーブルなど) の高さを検出できるように Javascript を使用し、最大の高さに達したときに関数を呼び出すこともできます。


また、完全に必要でない場合は、テーブルを使用しないことをお勧めします。これは非常に古い学校のアプローチであり、変更するのが面倒で、ブラウザー間で動作が異なり、不要なコードが多くなります。

于 2012-11-20T14:44:03.397 に答える