2012-07-11 4 views
3

현재 인쇄 중입니다. 나는 그것이 블록 레벨 요소의 변수 번호를 가지고 동적 페이지가 있습니다. 일부는 1 행일 수 있고, 100 행 이상일 수도 있습니다.페이지 넘김을 위해 다음 작업을 수행하십시오. 회피

<div class='myclass'><span id="id1">1</span>text 1 line....</span></div> 
<div class='myclass'><span id="id2">2</span>text 10 lines....</span></div> 
<div class='myclass'><span id="id3">3</span>text 3 lines....</span></div> 
<div class='myclass'><span id="id4">4</span>text 100+ lines....</span></div> 
... 

나는 페이지 나누기를 안다. 그것이 구현 될 때 (엄격한 html 모드에서만 Opera, Chrome 및 IE7 +에서 지원됨) 블록 레벨 요소가 2 페이지를 감싸는 것을 방지한다고 가정합니다. 이 CSS 태그는 여러 브라우저에서 지원되지 않기 때문에 아직 해결 방법이 있는지 궁금합니다.

jquery, 렌더링 렌더링을 사용하여 페이지 당 각 요소를 측정하고 높이를 더하고 마지막 요소가 페이지 높이보다 더해지면 페이지 나누기 기능을 추가했습니다. before : 항상 그 요소에 대해,하지만 그것은 특정 페이지 크기를 가정 할 때만 작동합니다. 그리고 그것은 결코 좋은 가정이 아닙니다.

sudo code only 
document.ready(function(){ 
    var pagesize = 100; 
    var currentheight; 
    $('.myclass').each(function(){ 
    if (currentheight + this.getHeight() > pagesize || this.getHeight > pagesize) { 
     this.css('page-break-before', 'always'); 
     currentheight = this.getHeight() % pagesize; 
    } 
    }); 
}); 

그리고 난 직후/페이지 나누기-전에 추가하지 않으 : 한 페이지에 1 라이너를 가지고 이해가되지 않기 때문에 항상 모든 요소.

+0

해결책을 찾았습니까? –

+0

아니요. JS를 사용하여 수동으로 페이지 나누기를 삽입하는 방식으로 페이지 서식을 지정합니다. CSS는 적어도 브라우저 전체에서 일관되게 페이지 브레이크를 정상적으로 포맷하는 좋은 방법이 없습니다. – Churk

답변

0

시도 .myclass{page-break-before: auto;}

+1

실제로 대답하기 전에 질문을 읽으십니까? '그리고 한 페이지에 1 개의 라이너가있는 것이 의미가 없으므로 항상 모든 요소에 항상 페이지 나누기를 추가하고 싶지 않습니다.'자동은 동일한 동작을 나타내므로 여전히 쓸모가 없습니다. . – Churk