わかりました、私はこれを理解するのに1日かそこら費やしたので、他の誰かが答えを必要とする場合に備えて、これに対する私の解決策を投稿したいと思いました.
一般的に言えば、ここで私がしたことです。
- 通常どおり生成された出力 (プリンター向けではない)
- 2 つのスタイル シート (1 つはプリンター用、もう 1 つは画面用) を作成しました。印刷出力に変換されるすべてのページ要素の測定値は、(ピクセルではなく) インチでした。
- jQueryを使用して、次のことを行いました。
-> DOM に初期ページを追加する呼び出し関数 - このようなもの
// assumes old_page_id is existing element in DOM, and var page_id = 1;
$j("<div class='page' id='" + page_id + "'><div class='print_area'></div></div>")
.insertAfter('#' + old_page_id);
- >ページであるdivの高さを測定します(私の場合、 $('.page').height(); )
-> div と新しいページの挿入を行う関数を実行しました - このようなもの
$('div_class').each(
function() {
// measure height of $(this)
// add it to running total of used space on existing page
// if sum total exceeds remaining space, create new page, and add to that one
// if still room left, add to this one
}
);
プリンター スタイルシートの各ページ div (私の場合、class='page') には次のようなものがあることに注意してください。
改ページ後: 常に;
これが、必要な場所にプリンターで新しいページを作成する方法です。
上記の jQuery 関数を実行した後、印刷ページに移動したい div 要素を含む元のセクションを非表示にしました。jQuery の測定では有効な結果が得られないため、このセクションを事前に非表示にできなかったことに注意してください (私の場合、すべての div を「hide_me」の id を持つ div ラッパー内に配置し、スタイルをheight:1px に設定しました。オーバーフロー:自動; )。
これは非常に 50,000 フィートのビューですが、お役に立てば幸いです。