私はTVスケジュールを作成していますが、少なくとも1つの標準ブラウザで印刷の問題は発生しません。
すべてのページにロゴとタイトルとテーブルヘッダーを配置する必要があります。何日も試して検索した結果、Chromeはすべてのページにテーブルヘッダーとposition: fixed
要素を印刷しないことがわかりました。このため 既知のバグ 。
頻繁に使用した-webkit-print-color-adjust: exact
を使用した背景色の印刷や、CSS @page
プロパティを使用したページの境界線の変更などの機能のため、Google Chromeを使用するようにビューをカスタマイズしましたが、それは私が探しているヘッダーを印刷できません:
TL; DR:jQuery/JavaScript /などを知っていますか? Chromeのすべてのページにテーブルヘッダーを印刷するコード?
はい、それはWebkit/Chromeのことです。各ページにtheadを印刷しません。たとえばFFはそうです。このようなことを実現するためにできることは、改ページを使用することです。
改ページはブロック要素でのみ機能するため、それに応じてtrのスタイルを設定する必要があります。
このような:
tr{
display:block;
}
次に、theadのコピーを開始し、javascriptを使用してX行ごとに配置します。
var head = $('table thead tr');
$( "tbody tr:nth-child(10n+10)" ).after(head.clone());
画面上では、それらすべての頭が必要なわけではありません。これをメディアクエリで削除します(便宜上、th> tr行に.headクラスを追加しました。:
@media screen {
tbody .head{
display: none;
}
}
次に、各.headの前で改ページします。
tbody tr.head {
page-break-before: always;
page-break-inside: avoid;
}
ここで確認してください: http://jsfiddle.net/jaap/7ZGVv/2/ jsfiddleではプレビューフレームのみを開くことができないため、ここでは印刷が機能しません。すべてを独自のファイルに結合すると、テーブルが分割され、スタイル設定が完璧ではなく、ブラウザ自体が分割する場所を決定するほど柔軟ではありませんが、それは何かです。
私は ここに解決策を投稿しました この問題を解決し、強制的な改ページで自然な改ページを回避しようとする必要がありません(本質的に信頼性が低く、紙を浪費する傾向がある手法)。
このソリューションはテーブルヘッダーに対して正確に機能しませんが、任意のHTMLのヘッダーを許可します。 Chromeでヘッダーとフッターを印刷できるようにするライブラリを作成しました。詳細は この回答 をご覧ください。