いつもお世話になっております。
今現在、私が保守担当になっている案件でWebページの一部コンテンツが印刷されない事象が発生しております。
環境が古く、約10年前のものを保守している状況です。また会社の方針により作り直し等は今の所計画されていないため、条件が限られてしまいます。
レイアウトやページ構造などの軽微なコード修正であれば可能なため、ご存知でしたら知恵をお貸りできればと思います。
事象
PHPでサーバーサイドレンダリングしたページにて、印刷時にページの切れ目が特定の場所になった場合コンテンツが表示されない。
コードと、詳細の説明。
ページ構成、印刷範囲は下記の通りで、アウトラインの構成は以下の通りです。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>(機密保持のため削除)</title> </head> <body> <h1>印刷のタイトル<h1> <form> <h2>売上明細</h2> <table> <!-- コンテンツの長さは可変。PHPでSSRを行う --> </table> <h2>入出金(必要経費等)</h2> <table> <!-- コンテンツの長さは可変。PHPでSSRを行う --> </table> <h2>合計</h2> <table> <!-- コンテンツの長さは可変。PHPでSSRを行う --> </table> </form> </body> </html>
可変長テーブルの長さにより、印刷範囲が1ページを超える場合が多々あります。
ちょうどページの切れ目が入出金額と合計の<h2>
のあたりになった場合に、2ページ目には合計のテーブルが印字されません。
また、テーブルの長さが長くなり、入出金のテーブルが2ページ目まで及ぶような場合は印刷できます。
動作環境など
サーバー側
- php5.6
- windows server 2012 R2
クライアント側
- Windows 7 Professional
- IE11 (互換表示設定を使用)
- 印刷サイズ:A4
条件
顧客へ納品している案件につき、手元には全く同じハードウェアは用意できmませんでした。またプリンタによる違いかと思いますが、同じプリンタを用意できなかったため、手元の環境では再現できませんでした。
また、リピート納品の案件のため、開発費などの捻出および、モダンブラウザ等への対応費用もかけられない状況です。
追記
印刷時のサイズ指定を90%に指定すれば印刷できます。しかしながら、顧客にこの方法を提案したところ受け入れてはいただけませんでした。
試してみたこと
顧客DBをdumpし、同じコードで実行。Windows 7マシンにてIE11(互換表示設定)で表示しました。
印刷を実行。A4ですが、プリンタが違うため事象は再現できず。
回答として頂きたい内容
印刷範囲を<div>
で囲ってしまえば印字できるのではないかと予想していますが、この対応方法で可能でしょうか。
その他、修正の案があれば・・・。
再現には現場にて実行する必要があるため、試す内容やベストアンサー等は遅くなってしまいます。