[java] Apache Batik 라이브러리를 활용한 PDF 생성

Apache Batik는 SVG(Scalable Vector Graphics) 파일을 다양한 형식의 이미지로 변환하는 Java 라이브러리입니다. 이 라이브러리는 SVG 이미지를 PDF로 변환하는 기능을 제공하기 때문에 PDF 생성에 활용될 수 있습니다.

Apache Batik 라이브러리 추가

먼저 Apache Batik 라이브러리를 프로젝트에 추가해야 합니다. Maven을 사용하는 경우, pom.xml에 다음 dependency를 추가할 수 있습니다:

<dependency>
    <groupId>org.apache.xmlgraphics</groupId>
    <artifactId>batik-transcoder</artifactId>
    <version>1.14</version>
</dependency>

Gradle을 사용하는 경우, build.gradle에 다음과 같이 추가할 수 있습니다:

implementation 'org.apache.xmlgraphics:batik-transcoder:1.14'

SVG를 PDF로 변환

다음은 Apache Batik를 사용하여 SVG 파일을 PDF로 변환하는 간단한 예제 코드입니다:

import org.apache.batik.transcoder.TranscoderInput;
import org.apache.batik.transcoder.TranscoderOutput;
import org.apache.batik.transcoder.TranscodingHints;
import org.apache.batik.transcoder.image.JPEGTranscoder;
import org.apache.batik.transcoder.image.PNGTranscoder;
import org.apache.batik.transcoder.image.TIFFTranscoder;
import org.apache.batik.transcoder.image.PNGTranscoder;
import org.apache.batik.transcoder.image.JPEGTranscoder;
import org.apache.batik.transcoder.image.TIFFTranscoder;
import org.apache.batik.transcoder.image.PNGTranscoder;
import org.apache.batik.transcoder.image.JPEGTranscoder;
import org.apache.batik.transcoder.image.TIFFTranscoder;

import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;

public class SVGtoPDFConverter {
    public static void main(String[] args) throws Exception {
        // SVG 파일 경로
        String svgFilePath = "path/to/input.svg";
        // PDF 파일 경로
        String pdfFilePath = "path/to/output.pdf";

        // 입력 및 출력 설정
        TranscoderInput transcoderInput = new TranscoderInput(new FileInputStream(svgFilePath));
        TranscoderOutput transcoderOutput = new TranscoderOutput(new FileOutputStream(pdfFilePath));

        // PDF로 변환
        PDFTranscoder transcoder = new PDFTranscoder();
        transcoder.addTranscodingHint(PNGTranscoder.KEY_WIDTH, new Float(400));
        transcoder.addTranscodingHint(PNGTranscoder.KEY_HEIGHT, new Float(300));

        transcoder.transcode(transcoderInput, transcoderOutput);
    }
}

위 예제 코드에서는 PDFTranscoder 객체를 생성하여 transcode 메서드를 사용하여 SVG 파일을 PDF로 변환합니다.

Apache Batik를 사용하여 SVG를 PDF로 변환하는 간단한 예제를 살펴보았습니다. 이를 참고하여 프로젝트에 적용해 보시기 바랍니다.

참고 자료