Java로 CSV 파일을 PDF로 변환하는 방법

Pilalo Jovanitho·2026년 8월 5일

CSV(Comma-Separated Values)는 데이터 교환에 가장 널리 사용되는 텍스트 기반 형식 중 하나입니다. 하지만 CSV 파일은 데이터를 구조화하여 보여주거나 인쇄하기에는 적합하지 않습니다. 반면 PDF(Portable Document Format)는 운영체제나 장치에 관계없이 동일한 레이아웃과 서식을 유지하는 특성을 가지고 있어, 보고서 작성이나 데이터 배포 시 자주 활용됩니다.

이 글에서는 Java용 Spire.XLS for Java 라이브러리를 사용하여 CSV 데이터를 읽고 PDF 문서로 변환하는 과정을 단계별로 설명합니다. 이 라이브러리는 주로 Excel 파일 작업에 사용되지만, CSV 파일을 불러와 PDF로 내보내는 기능도 함께 제공합니다.

1. 라이브러리 설치

프로젝트에서 사용할 라이브러리를 의존성에 추가합니다. Maven을 사용하는 경우 pom.xml 파일에 아래 리포지토리와 의존성을 포함시킵니다 .

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.xls</artifactId>
        <version>16.7.3</version>
    </dependency>
</dependencies>

Maven 환경이 아니라면 JAR 파일을 직접 내려받아 프로젝트의 빌드 경로에 추가하는 방식으로도 사용할 수 있습니다 .

2. CSV 파일을 PDF로 변환하는 기본 코드

CSV를 PDF로 변환하는 핵심 과정은 Workbook 클래스 하나로 처리됩니다. 다음은 공식 문서를 참조한 기본 변환 코드입니다 .

import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

public class ConvertCsvToPdf {
    public static void main(String []args) {
        // Workbook 인스턴스 생성
        Workbook wb = new Workbook();
        
        // CSV 파일 로드 (구분자 지정 가능)
        wb.loadFromFile("Sample.csv", ",");
        
        // 워크시트가 한 PDF 페이지에 맞도록 설정
        wb.getConverterSetting().setSheetFitToPage(true);
        
        // 첫 번째 워크시트 가져오기
        Worksheet sheet = wb.getWorksheets().get(0);
        
        // 모든 열의 너비를 내용에 맞게 자동 조정
        for (int i = 1; i < sheet.getColumns().length; i++) {
            sheet.autoFitColumn(i);
        }
        
        // 워크시트를 PDF로 저장
        sheet.saveToPdf("toPDF.pdf");
    }
}

이 코드의 주요 특징은 다음과 같습니다:

  • loadFromFile(filePath, separator) 메서드로 CSV 파일을 읽고 구분자를 지정합니다 .
  • getConverterSetting().setSheetFitToPage(true)를 통해 PDF 페이지에 내용이 잘 맞도록 설정합니다 .
  • autoFitColumn() 메서드로 각 열의 너비를 자동 조정하여 데이터가 잘리지 않도록 합니다 .

3. 변환 시 사용자 설정 적용하기

단순 변환 외에도, 필요에 따라 PDF 출력물의 모양을 일부 제어할 수 있습니다 .

  • 시트 선택: CSV 파일은 기본적으로 첫 번째 시트로 로드됩니다. 특정 시트만 PDF로 변환하려면 Worksheet 객체를 가져와 saveToPdf() 메서드를 사용합니다.
  • 페이지 설정: PageSetup 객체를 통해 용지 방향, 여백, 배율 등을 조정할 수 있습니다. 예를 들어 sheet.getPageSetup().setOrientation(PageOrientationType.Landscape)로 가로 방향을 설정할 수 있습니다 .
  • 스타일 적용: 변환 전에 셀 스타일(글꼴, 크기, 색상, 정렬, 테두리 등)을 변경할 수 있습니다. 이는 CSV 파일 자체에는 서식 정보가 없기 때문에, 보다 보기 좋은 PDF를 만들고자 할 때 유용합니다 .

스타일 적용 예시:

// 셀 범위에 스타일 적용
CellRange range = sheet.getRange("A1:C10");
range.getStyle().getFont().setBold(true);
range.getStyle().getFont().setSize(12);
range.getStyle().getBorders().setAllBorders(BorderLineStyle.Thin);
range.getStyle().setColor(java.awt.Color.LIGHT_GRAY);

4. 다른 변환 방식과의 비교

Java에서 CSV를 PDF로 변환하는 방법은 이 라이브러리 외에도 다양합니다.

  • Apache PDFBox / iText: PDF 생성 및 조작에 특화된 오픈소스 라이브러리입니다. CSV 파싱은 직접 구현하거나 OpenCSV와 같은 라이브러리와 함께 사용해야 하며, PDF 테이블 생성을 위한 상대적으로 많은 코드 작성이 필요합니다.
  • JasperReports: 복잡한 리포트 디자인이 필요할 때 강력한 도구입니다. 하지만 XML 기반의 디자인 파일(.jrxml)을 작성해야 하므로 학습 곡선이 있습니다.
  • Spire.XLS for Java: 이 글에서 사용한 방식은 CSV를 Excel 개체로 중간 변환하여 PDF를 생성하기 때문에, CSV의 '표' 형태를 PDF의 '테이블'로 비교적 쉽게 매핑할 수 있다는 장점이 있습니다.

선택하는 도구는 프로젝트의 복잡도, 비용(라이선스), 개발 시간 등의 요소를 고려하여 결정하는 것이 좋습니다 .

5. 추가 고려 사항

  • 라이선스: 이 라이브러리는 상용 제품입니다. 무료 버전(Free Spire.XLS for Java)도 제공되지만, 파일 변환 시 워터마크 추가나 문서 수 제한 등의 기능 제한이 있을 수 있으므로 목적에 맞는 버전을 선택해야 합니다 .
  • 성능: 변환 작업은 파일의 크기와 복잡도에 따라 리소스를 소모할 수 있습니다. 특히 대용량 파일을 다룰 때는 메모리 설정에 유의해야 합니다 .
  • 문자 인코딩: CSV 파일이 UTF-8이 아닌 다른 인코딩을 사용할 경우, 파일을 읽을 때 문자 깨짐 현상이 발생할 수 있으므로 적절한 인코딩 처리가 필요합니다 .

결론

이 글에서는 Java용 Spire.XLS 라이브러리를 통해 CSV 파일을 PDF 문서로 변환하는 기본적인 방법과 몇 가지 사용자 설정 옵션을 코드 예제와 함께 살펴보았습니다. 공식 문서를 기준으로 loadFromFile(), setSheetFitToPage(), autoFitColumn(), saveToPdf() 메서드를 활용하면 CSV 데이터를 서식이 유지되는 PDF로 비교적 간편하게 변환할 수 있습니다. 다만 이 라이브러리는 상용 제품이므로 무료 버전의 제약 사항이나 라이선스 비용을 프로젝트 상황에 맞게 검토해야 하며, 다른 오픈소스 대안들과의 비교를 통해 가장 적합한 도구를 선택할 것을 권장합니다.

0개의 댓글