고품질 Word 문서를 PDF로 변환하는 무료 Java API
선도적인 오픈소스 라이브러리는 Java 개발자가 네이티브 애플리케이션을 사용해 MS Office DOCX, XLSX, PDF 파일을 높은 정확도로 변환하도록 지원합니다.
Documents4j란?
documents4j는 DOCX를 PDF로, XLSX를 PDF로 변환하는 등 서로 다른 형식 간에 문서를 변환하도록 설계된 강력한 오픈소스 Java 라이브러리입니다. 많은 전통적인 라이브러리와 달리, documents4j는 변환 프로세스를 Microsoft Word와 Excel 같은 네이티브 애플리케이션에 위임하여 최소한의 포맷팅 문제로 고품질 출력을 보장합니다. 이 라이브러리는 다른 접근 방식을 취합니다. 변환 로직을 재구현하는 대신, 이미 이러한 형식을 완벽히 이해하고 있는 네이티브 애플리케이션(예: Microsoft Word 또는 Excel)에 무거운 작업을 위임하는 브리지 역할을 합니다. 이를 통해 Word 파일에서 생성된 PDF와 같은 출력 문서는 MS Office에서 "다른 이름으로 저장"을 수동으로 클릭했을 때와 정확히 동일하게 보입니다.
documents4j의 주요 가치는 정확도에 있습니다. 모든 여백과 글꼴이 그대로 유지되어야 하는 전문 수준의 문서가 필요한 기업에게는 오픈소스 파서에 의존하는 것이 위험할 수 있습니다. documents4j는 템플릿에서 청구서나 보고서를 생성하고, Windows 기반 환경에서 문서 워크플로를 자동화하며, 원격 서버 설정을 통해 변환 로직을 메인 애플리케이션에서 분리하는 데 특히 유용합니다. 네이티브 애플리케이션을 활용함으로써 전통적인 라이브러리와 비교해 타의 추종을 불허하는 정확성을 보장합니다. 로컬 및 원격 처리, 동시 실행, 로드 밸런싱 지원은 엔터프라이즈급 시스템에 매우 적합합니다.
Documents4j 시작하기
우선 시스템에 Java Development Kit(JDK)가 설치되어 있어야 합니다. Maven 기반 Java 프로젝트에서 Docs-to-PDF-Converter를 참조하는 것이 더욱 간단합니다. pom.xml에 다음 종속성을 추가하고 IDE가 Docs-to-PDF-Converter JAR 파일을 가져와 참조하도록 하면 됩니다.
documents4j Maven 저장소
// Here’s a commonly used dependency (Local converter):
<dependency>
<groupId>com.documents4j</groupId>
<artifactId>documents4j-local</artifactId>
<version>1.1.13</version>
</dependency>
//If you only need the API:
<dependency>
<groupId>com.documents4j</groupId>
<artifactId>documents4j-api</artifactId>
<version>1.1.13</version>
</dependency>
GitHub에서 documents4j 설치
git clone https://github.com/documents4j/documents4j.git
cd documents4j
cd documents4j-local-demo
mvn jetty:run
Java 라이브러리로 Word를 PDF로 변환
오픈소스 Docs-to-PDF-Converter를 사용하면 소프트웨어 개발자가 Java 애플리케이션 내에서 여러 문서 유형을 PDF로 변환할 수 있습니다. 라이브러리는 Micro Word(DOC, DOCX), Excel(XLS, XLSX), PowerPoint(PPT, PPTX), RTF, OpenDocument 포맷 등을 지원합니다. 이러한 광범위한 포맷 호환성은 다양한 사용 사례에 원활한 문서 변환을 보장합니다. 아래는 Java 명령을 사용해 Word 문서(.docx)를 PDF로 변환하는 간단한 예제입니다.
Java 라이브러리로 Word를 PDF로 변환하는 방법은?
import com.documents4j.api.DocumentType;
import com.documents4j.api.IConverter;
import com.documents4j.job.LocalConverter;
import java.io.File;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
public class DocumentConverter {
public static void main(String[] args) {
// 1. Specify the source and target files
File wordFile = new File("C:/documents/input.docx");
File targetFile = new File("C:/documents/output.pdf");
// 2. Initialize the converter (Local instance)
IConverter converter = LocalConverter.builder()
.workerPool(20, 25, 2, TimeUnit.SECONDS)
.processTimeout(5, TimeUnit.SECONDS)
.build();
// 3. Execute the conversion fluently
boolean success = converter.convert(wordFile).as(DocumentType.MS_WORD)
.to(targetFile).as(DocumentType.PDF)
.execute();
if (success) {
System.out.println("Conversion completed successfully!");
}
// 4. Always shut down the converter to release native resources
converter.shutDown();
}
}
REST API 서버가 있는 원격 컨버터
오픈소스 Docs-to-PDF-Converter 라이브러리를 사용하면 소프트웨어 개발자가 문서를 PDF로 변환하는 동안 PDF 출력물을 맞춤 설정할 수 있습니다. 예를 들어 개발자는 페이지 크기(A4, Letter 등), 여백, 방향(세로 또는 가로), 헤더/푸터를 제어할 수 있습니다. 또한 HTML 콘텐츠에 CSS 스타일을 적용해 시각적 제어를 정밀하게 수행하고, 폰트 패밀리, 색상, 크기 등을 제어할 수 있습니다. 다음 코드 스니펫은 라이브러리가 생성한 PDF에 다양한 설정을 적용하는 방법을 보여줍니다.
Java 앱에서 원격 Word 문서 변환을 수행하는 방법은?
import com.documents4j.api.DocumentType;
import com.documents4j.api.IConverter;
import com.documents4j.job.RemoteConverter;
import java.io.*;
import java.util.concurrent.TimeUnit;
public class RemoteConverterExample {
public static void main(String[] args) throws Exception {
// The RemoteConverter connects to the standalone server
IConverter converter = RemoteConverter.builder()
.baseFolder(new File("/tmp/documents4j"))
.workerPool(10, 20, 5, TimeUnit.SECONDS)
// Timeout for each HTTP conversion request
.requestTimeout(30, TimeUnit.SECONDS)
// URI of the running conversion server
.baseUri("http://192.168.1.100:9998")
.build();
// Convert using InputStream / OutputStream — recommended for RemoteConverter
// because data is already serialized for HTTP transport
try (InputStream source = new FileInputStream("/input/contract.docx");
OutputStream target = new FileOutputStream("/output/contract.pdf")) {
boolean success = converter
.convert(source).as(DocumentType.MS_WORD)
.to(target).as(DocumentType.PDF)
.execute();
System.out.println("Remote conversion success: " + success);
}
converter.shutDown();
}
}
SSL 암호화 및 기본 인증
Docs-to-PDF-Converter 라이브러리는 Java 개발자가 손쉽게 동적이고 정교한 PDF 문서를 만들 수 있도록 지원합니다. 입력 파일 형식을 자동으로 감지하고 그에 맞게 처리합니다. Word, Excel, PowerPoint, RTF 파일이든 추가 설정 없이도 라이브러리가 원활하게 PDF로 변환합니다. 아래 예제는 Java 애플리케이션 내에서 마크다운 파일을 PDF로 변환하는 방법을 보여줍니다.
비동기 및 우선순위 처리
Conversions can be resource-intensive. documents4j allows you to schedule conversions to run in the background (asynchronously) using a Future