[java] Apache POI를 이용한 Word 이미지 삽입
Apache POI는 Java에서 Microsoft Office문서를 생성하고 편집할 수 있는 라이브러리입니다. 이 라이브러리를 사용하면 Java로 워드 문서를 생성하고 이미지를 삽입할 수 있습니다. 이번 블로그에서는 Apache POI를 사용하여 워드 문서에 이미지를 삽입하는 방법에 대해 알아보겠습니다.
1. Apache POI 의존성 추가
우선, Maven 프로젝트를 사용하는 경우, pom.xml
파일에 다음 의존성을 추가해야 합니다.
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
</dependencies>
Gradle 프로젝트를 사용하는 경우, build.gradle
파일에 다음 의존성을 추가해야 합니다.
dependencies {
implementation 'org.apache.poi:poi:4.1.2'
implementation 'org.apache.poi:poi-ooxml:4.1.2'
}
이후, Maven이나 Gradle을 사용하여 의존성을 업데이트합니다.
2. 워드 문서 생성 및 이미지 삽입
아래는 Apache POI를 사용하여 워드 문서에 이미지를 삽입하는 예제 코드입니다. 이미지 파일은 로컬 경로에 존재한다고 가정합니다.
import org.apache.poi.xwpf.usermodel.*;
import java.io.*;
public class WordImageInsertion {
public static void main(String[] args) {
// 워드 문서 생성
XWPFDocument doc = new XWPFDocument();
// 이미지 삽입
try {
// 이미지 파일 경로
String imagePath = "C:/path/to/image.png";
File imageFile = new File(imagePath);
FileInputStream fis = new FileInputStream(imageFile);
byte[] imageData = IOUtils.toByteArray(fis);
fis.close();
// 이미지 삽입을 위한 Inline 삽입 정보 생성
int format;
if (imagePath.endsWith(".png")) {
format = XWPFDocument.PICTURE_TYPE_PNG;
} else if (imagePath.endsWith(".jpeg") || imagePath.endsWith(".jpg")) {
format = XWPFDocument.PICTURE_TYPE_JPEG;
} else {
throw new IllegalArgumentException("Unsupported image format");
}
int imageWidth = 200; // 이미지 너비
int imageHeight = 200; // 이미지 높이
// 이미지 삽입
XWPFParagraph paragraph = doc.createParagraph();
XWPFRun run = paragraph.createRun();
int picId = doc.getNextPicNameNumber(format);
run.addPicture(new ByteArrayInputStream(imageData), format, "image" + picId, Units.toEMU(imageWidth), Units.toEMU(imageHeight));
// 워드 문서 저장
FileOutputStream fos = new FileOutputStream("C:/path/to/output.docx");
doc.write(fos);
fos.close();
System.out.println("이미지가 성공적으로 삽입되었습니다.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
위 예제 코드는 워드 문서를 생성하고 이미지를 삽입하는 기본적인 예제입니다. 필요에 따라 삽입할 이미지의 경로와 삽입할 이미지의 크기를 조정하여 사용하면 됩니다.
결론
Apache POI를 사용하면 Java에서 워드 문서에 이미지를 쉽게 삽입할 수 있습니다. 이를 통해 워드 문서를 동적으로 생성하거나 이미지를 삽입해야 하는 경우 유용하게 활용할 수 있습니다. 참고 자료는 Apache POI 공식 문서를 참조하시기 바랍니다.