웹페이지 A4에 맞게 나누어 출력하기
페이지 정보
작성자 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글 1건 조회 3,617회 작성일 16-10-26 10:39본문
양식이 같고 내용이 다른 테이블이 여러 개 포함된 웹 문서를 A4용지 한 장당 테이블 1개씩 들어가도록 페이지를 나눠서 출력해야 할 일이 생겼다.
테이블 간격이 정확히 맞지 않으면 테이블이 많아질 경우 오차가 커져서 테이블 1개가 2개의 페이지로 나뉘어 출력될 수 있다.
그래서 처음에는 PDF로 변환하여 출력하는 방법을 생각하고 PDF 생성 방법을 찾아다니다가 iText라는 걸 발견했는데 원하는 지점에서 명시적으로 페이지를 나누는 것은 가능했지만 원하는 모양을 얻기가 굉장히 번거롭고 한글 폰트의 사용이 제한적이었다.
JasperReport나 iReport를 사용하는 방법도 있었지만 구조가 복잡해서 이해하고 사용하기까지 시간이 오래 걸릴 것 같았다.
iText를 붙들고 며칠씩이나 씨름하다가 도저히 이건 쓸 수 없겠다는 생각이 들어서 테이블이나 div를 이용해서 A4 출력 범위를 대강이라도 맞춰서 반복시켜 출력하는 방식을 택하기로 결정했다.
그래서 혹시 이미 A4에 맞는 table이나 div의 설정 정보(width, height, margin 등)가 이미 인터넷에 있지 않을까 해서 html table A4 size라는 검색어로 구글링을 해보았다.
그런데 세 번째 검색결과를 클릭해보니 누군가가 w3사이트의 어떤 페이지로 링크를 걸어둔 답변이 있어서 따라가 보았더니 이미 CSS2 규격에 paged media를 처리하기 위한 내용이 포함되어있음(http://www.w3.org/TR/CSS2/page.html)을 알 수 있었다.
<style>
@page a4sheet { size: 21.0cm 29.7cm }
.a4 { page: a4sheet; page-break-after: always }
</style>
이렇게 선언해주고 table이나 div에 a4클래스를 지정해주면 끝.
며칠씩이나 Spring viewResolver와 iText를 붙들고 씨름하던게 저걸로 해결되었다.
화면상으로는 아무 차이가 없지만 프린터로 인쇄를 하면 내용이 페이지별로 분리되어서 출력된다.
[출처] 웹페이지 A4에 맞게 나누어 출력하기.|작성자 그사람