[css] CSS 인쇄 : 페이지 간 반감기 DIV 피하기?

Cocoa의 WebView (WebKit을 렌더러로 사용하므로)에서 많은 항목 모음을 가져와 HTML로 팝업하는 소프트웨어 조각에 대한 플러그인을 작성하고 있습니다. 원정 여행).

그것이 만드는 DIV는 동적 높이이지만 너무 많이 변하지는 않습니다. 보통 약 200px입니다. 어쨌든, 문서 당 약 6 백 개에 달하는이 항목들로 인해, 인쇄하는데 정말 힘든 시간을 보내고 있습니다. 운이 좋으면, 모든 페이지의 맨 위와 맨 아래에 반으로 잘린 항목이있어 실제로 출력물을 사용하기가 매우 어렵습니다.

페이지 나누기 전, 페이지 나누기 후, 페이지 나누기 내부 및 세 가지 조합을 사용해 보았습니다. WebKit이 지침을 올바르게 렌더링하지 못하거나 지침을 사용하는 방법에 대한 이해가 부족한 것 같습니다. 어쨌든 도움이 필요합니다. 인쇄 할 때 DIV가 반으로 잘리지 않도록하려면 어떻게해야합니까?



답변

이것은 작동해야합니다 :

@media print
{
    div{
        page-break-inside: avoid;
    }
}

현재 브라우저 지원 (12-03-2014)에 유의하십시오 .

  • 크롬-1.0 이상
  • Firefox (Gecko)-19.0+
  • 인터넷 익스플로러-8.0+
  • 오페라-7.0+
  • 사파리-1.3+ (312)

답변

부분 솔루션 만 : IE 에서이 작업을 수행 할 수있는 유일한 방법은 각 div를 자체 테이블에 래핑하고 테이블에 페이지 나누기를 설정하여 피하는 것입니다.


답변

page-break-inside: avoid; wkhtmltopdf 사용에 문제가있었습니다.

텍스트가 끊어지는 것을 피하려면 display: table; 텍스트가 포함 된 div의 CSS에 .

나는 이것이 당신에게도 효과가 있기를 바랍니다. 감사합니다 JohnS.


답변

페이지 나누기 내부 : 피하십시오; 확실히 웹킷에서 작동하지 않습니다. 실제로 5 년 이상 알려진 문제입니다. https://bugs.webkit.org/show_bug.cgi?id=5097

내 연구가 진행되는 한, 이것을 달성하는 알려진 방법은 없습니다 (내 자신의 핵을 알아 내려고 노력하고 있습니다)

내가 당신에게 줄 수있는 조언은 FF 에서이 기능을 달성하기 위해, 당신이하지 않는 내용을 랩으로 넘기고 싶습니다. 컨테이너 크기를 너무 작게 표시합니다).

슬프게도, FF는 내가 이것을 달성 할 수있는 유일한 브라우저이며, 웹킷은 내가 더 걱정하는 브라우저입니다.


답변

페이지 구분 후 가능한 값은 다음과 같습니다. auto, always, avoid, left, right

나는 당신이 절대적으로 배치 된 요소에 페이지 구분 속성을 사용할 수 없다고 생각합니다.


답변

나는 해결책이없는 동일한 문제가 있습니다. page-break-inside 는 브라우저가 아니라 Opera에서 작동합니다. 대안은 페이지 구분 후 를 사용하는 것입니다. 피하십시오;div의 모든 자식 요소에서 togehter …를 유지하지만 내 테스트에서 avoid-Attribute가 작동하지 않습니다. Firefox에서 …

모든 ppular 브라우저에서 작동하는 것은 예를 들어 페이지를 강제로 중단하는 것입니다. 페이지 구분 : 항상


답변

내가 겪었던 한 가지 함정은 ‘overflow’속성이 ‘auto’로 설정된 부모 요소였습니다. 이것은 인쇄 버전에서 page-break-inside 속성을 가진 하위 div 요소를 무효화합니다. 그렇지 않으면 page-break-inside: avoidChrome에서 제대로 작동합니다.