TIL
PHPWord - 여러 문서 파일(docx)을 하나의 문서(docx)로 병합하기
개발따라김양
2024. 12. 6. 14:21
1. 문제 상황
- 여러 문서 파일을 하나의 문서 파일로 병합해야 했습니다.
2. 문제 해결
- PHPWord 라이브러리를 사용했습니다.
- 코드
<?php
require_once '/vendor/autoload.php'; // 라이브러리 경로
use PhpOffice\PhpWord\PhpWord;
use PhpOffice\PhpWord\IOFactory;
// PhpWord 인스턴스 생성
$phpWord = new PhpWord();
// 파일 경로 배열 생성
$fileArray = [] // 파일 경로 배열
// 각 파일을 PhpWord로 로드하고 병합
foreach ($fileArray as $file) {
if (!file_exists($file)) {
echo "파일을 찾을 수 없습니다: $file\n";
continue;
}
try {
$source = IOFactory::load($file);
if (!$source) {
echo "파일 로드 실패: $file\n";
continue;
}
$sections = $source->getSections();
// 섹션별로 문서에 추가
foreach ($sections as $section) {
$newSection = $phpWord->addSection();
foreach ($section->getElements() as $element) {
$newSection->addElement(clone $element);
}
}
} catch (Exception $e) {
echo "문서 처리 중 오류 발생: " . $e->getMessage() . "\n";
}
}
// 병합된 문서를 저장
$outputFile = __DIR__ . '/abstract_All.docx';
try {
$objWriter = IOFactory::createWriter($phpWord, 'Word2007');
$objWriter->save($outputFile);
echo "문서 병합 성공: $outputFile\n";
} catch (Exception $e) {
echo "문서 저장 중 오류 발생: " . $e->getMessage() . "\n";
}