동적 Word 문서를 생성하는 JavaScript API
Node.js 및 브라우저 기반 애플리케이션으로 동적 Word 문서를 만들기 위한 오픈 소스 JavaScript 라이브러리.
Docx-templates란 무엇인가요?
Docx-Templates는 사전 정의된 템플릿을 사용하여 동적인 Microsoft Word(.docx) 문서를 생성할 수 있게 해주는 오픈 소스 JavaScript 라이브러리입니다. Word 문서를 프로그래밍으로 수동 작성하는 대신, 개발자는 Microsoft Word에서 템플릿을 디자인하고 삽입된 명령을 통해 동적 데이터를 주입할 수 있습니다. 이 라이브러리는 Node.js와 브라우저 환경 모두에서 작동하여 현대 웹 및 서버 측 애플리케이션에 매우 다재다능합니다. DOCX 파일을 내부 XML 구조를 파싱하고 템플릿 명령을 런타임에 실제 데이터로 교체함으로써 처리합니다.
Docx-Templates 라이브러리는 Node.js와 브라우저 환경 모두를 위해 설계된 강력한 오픈소스 도구입니다. 이 라이브러리의 주요 장점은 디자인과 로직을 분리한다는 점입니다. 비기술 사용자도 Word에서 레이아웃과 스타일을 디자인할 수 있고, 개발자는 데이터 주입에 집중할 수 있습니다. 루프, 조건부 서식 및 문서 내에서 직접 JavaScript 스니펫을 실행하는 등 복잡한 로직을 지원합니다. 이는 XML이나 독점 디자인 도구와 씨름하지 않고도 고품질 보고서를 생성해야 하는 개발자에게 이상적인 솔루션이 됩니다.
Docx-templates 시작하기
Docx-templates 라이브러리를 설치하는 권장 방법은 npm을 이용하는 것입니다. 원활한 설치를 위해 다음 명령을 사용하십시오.
NPM을 통해 Docx-Templates 설치
$ npm install docx-templates Yarn을 통해 Docx-Templates 설치/strong>
$ yarn add docx-templates JS API를 통한 템플릿 기반 문서 생성
오픈 소스 Docx-Templates 라이브러리는 소프트웨어 개발자가 Word에서 문서를 디자인하고 간단한 명령을 사용하여 데이터를 동적으로 삽입할 수 있게 합니다. 이 접근 방식은 프레젠테이션과 로직을 분리하여 템플릿을 코드 변경 없이 쉽게 관리하고 업데이트할 수 있게 합니다. 데이터 객체의 속성에 직접 접근하거나 간단한 표현식을 실행할 수도 있습니다. 예를 들어, 전체 이름을 삽입하려면 템플릿은 다음과 같이 됩니다: {firstName} {surname}. 라이브러리는 코드를 평가하고 원활하게 교체합니다.
JavaScript 앱 내에서 Word 문서를 동적으로 생성하는 방법은?
import createReport from 'docx-templates';
import fs from 'fs';
const template = fs.readFileSync('template.docx');
const report = await createReport({
template,
data: { name: 'John', surname: 'Doe' },
});
fs.writeFileSync('output.docx', report);
JavaScript를 이용한 동적 이미지 삽입
텍스트를 넘어, 오픈 소스 Docx-Templates 라이브러리는 이미지를 실시간으로 삽입할 수 있습니다. 여기에는 로컬 파일, URL에서 가져온 이미지, 혹은 프로그래밍으로 생성된 QR 코드가 포함됩니다. 이미지의 크기와 배치를 제어할 수 있습니다. 이 기능은 신분증 배지, 제품 카탈로그, 동적 차트와 시각적 증거가 필요한 보고서를 만드는 데 혁신적입니다. 다음은 JavaScript API를 통해 Word 문서에 이미지를 삽입하는 방법을 보여주는 간단한 예시입니다.
JavaScript API를 통해 Word 문서에 즉시 이미지를 삽입하는 방법은?
const buffer = await createReport({
template,
data: {
userAvatar: async () => {
const resp = await fetch('https://example.com/photo.png');
return { width: 3, height: 3, data: await resp.arrayBuffer(), extension: '.png' };
}
},
});
// In Word: {IMAGE userAvatar()}
강력한 루프 (FOR/END-FOR)
FOR 명령을 사용하면 데이터 목록을 처리하는 것이 원활합니다. 이 기능을 통해 배열을 반복하여 표 행, 목록 또는 문서의 전체 섹션을 생성할 수 있습니다. Docx-Templates 라이브러리는 중첩 루프를 지원하여 부서와 해당 직원 목록과 같은 복잡한 계층 구조 데이터를 원본 Word 스타일을 유지하면서 표현할 수 있습니다. 다음 코드 예제는 이를 구현하는 방법을 보여줍니다.
JavaScript 앱에서 고급 루프를 적용하는 방법은?
const buffer = await createReport({
template,
data: {
projects: [
{ name: 'SEO Optimization', status: 'Completed' },
{ name: 'API Integration', status: 'In Progress' }
]
},
});
/* In Word:
{FOR project IN projects}
Project: {project.name} - Status: {project.status}
{END-FOR}
*/
맞춤형 JavaScript 컨텍스트 (EXEC)
Docx-Templates 라이브러리의 가장 고급 기능 중 하나는 EXEC(또는 !) 명령을 사용하여 임의의 JavaScript 스니펫을 실행할 수 있는 능력입니다. additionalJsContext를 제공함으로써 템플릿에 사용자 정의 헬퍼 함수를 노출할 수 있습니다. 이를 통해 템플릿은 메인 애플리케이션 로직에서 모든 데이터를 사전 처리할 필요 없이 계산을 수행하고, 날짜를 포맷하며, 문자열을 내부적으로 조작할 수 있습니다.