[]
        
(Showing Draft Content)

PDF 표 그리기

PdfDocument클래스에서는 테이블을 그릴 수도 있습니다.

이를 위해서는 PdfPaths 객체의 rectstroke 메서드를 사용해야 합니다. PdfPaths 객체는 PdfDocument.paths 속성을 통해 접근할 수 있습니다.


rect메서드는 여러 인수를 받으며, 그 중에는 사각형의 시작 좌표(x, y)와 사각형의 너비와 높이 등도 포함됩니다. stroke 메서드는 매개변수 없이 호출하여 사각형 경로를 그릴 수 있습니다. 이 두 메서드는 다음과 같이 체이닝하여 사용할 수 있습니다:

doc.paths
    .rect(x, y, colWidth, rowHeight)
    .stroke();

drawText 메서드는 셀에 텍스트를 그릴 때 사용되며, 텍스트의 크기도 정의할 수 있습니다. 또한, 만약 한 행이 페이지 크기를 초과하면 addPage 메서드를 사용하여 새 페이지를 추가할 수 있습니다.

예제

이 코드 예시는 50개의 행과 3개의 열로 구성된 테이블을 생성합니다. 데이터 컬렉션에서 텍스트를 셀에 삽입하며, 페이지 오버플로우도 고려합니다.

let colWidth = 100, 
    rowHeight = 18, 
    data = getData(50), 
    dataKeyMap = ['id', 'product', 'country'], 
    y = 0;

for (let i = 0; i < 50; i++) {
    for (let j = 0; j < dataKeyMap.length; j++) {
        let x = j * colWidth;
        
        doc.paths
            .rect(x, y, colWidth, rowHeight)
            .stroke();
        
        doc.drawText(data[i][dataKeyMap[j]] + '', x + 2, y + 2, {
            height: rowHeight,
            width: colWidth
        });
    }
    
    y += rowHeight;
    
    if (y >= doc.height) {
        y = 0;
        doc.addPage();
    }
}
결과

pdf-table-page-overflow