우리는 GroupDocs.Merger for .NET v26.9 버전이 2026년 9월에 출시됨을 기쁘게 알려드립니다. 이번 릴리스에서는 스프레드시트의 행 단위 결합을 도입하고, PageBuilder를 통한 TIFF 페이지 선택을 개선했으며, 미리보기 차원 처리를 향상시키고, Visio 및 DOC 출력 시 발생하던 동시성 문제를 해결했으며, 여러 조용히 실패하던 상황을 명확한 예외로 대체하여 API를 보다 견고하고 예측 가능하게 만들었습니다.
이번 릴리스의 새로운 기능
- [Feature] 여러 파일의 Excel 행을 하나의 시트로 병합 (MERGERNET-2198)
- [Feature] PageBuilder 페이지 선택을 첫 번째 TIFF 문서에 적용 (MERGERNET-1372)
- [Improvement] SetLicense가 라이선스 파일을 찾지 못할 경우 예외를 발생 (MERGERNET-2183)
- [Improvement] SetLicense에서 빈 라이선스 스트림을 거부 (MERGERNET-2184)
- [Improvement] 이미지 또는 오디오 파일을 지원되지 않는 형식으로 결합할 때 명확한 예외 발생 (MERGERNET-2190)
- [Improvement] 크로스 플랫폼 패키지에서 System.Drawing.Common을 제거하고 누락된 종속성을 명확히 보고 (MERGERNET-2202)
- [Bug] Merger가 경로로 문서를 열거나 결합한 후 소스 파일을 닫음 (MERGERNET-2187)
- [Bug] Merger를 구성할 때 스트림 팩토리를 한 번만 호출 (MERGERNET-2189)
- [Bug] 여러 스레드에서 PDF 또는 XPS 문서를 DOC로 결합할 때 손상된 DOC 출력 수정 (MERGERNET-2192)
- [Bug] 페이지 번호가 지정되지 않았을 때 모든 페이지에 페이지 방향 변경 적용 (MERGERNET-2194)
- [Bug] 모든 문서 형식군에서 요청된 미리보기 Width와 Height를 반영 (MERGERNET-2196)
- [Bug] 페이지 번호 없이 호출된 ExtractPages 및 RemovePages를 거부하고, 조용히 빈 문서나 변경되지 않은 문서를 생성하지 않음 (MERGERNET-2197)
- [Bug] 동시에 처리할 때 Visio 문서가 간헐적으로 ArgumentNullException trueTypeFont 오류가 발생하는 문제 수정 (MERGERNET-2199)
- [Bug] 포함된 파일에 수정 날짜가 없을 때 PDF 포트폴리오가 NullReferenceException으로 실패하는 문제 수정 (MERGERNET-2200)
공개 API 변경 사항
1. 스프레드시트 결합 — 행 단위 모드 (새 API)
GroupDocs.Merger.Domain.Options 네임스페이스에 새로운 공개 타입이 추가되었습니다:
| 유형 | 설명 |
|---|---|
| SpreadsheetJoinOptions | 스프레드시트용 결합 옵션으로, PageJoinOptions에서 파생되었습니다. 속성: Mode, SkipRows, SheetMatching. |
| SpreadsheetJoinMode | Worksheets(기본값)는 결합 파일의 시트를 별개의 워크시트로 추가합니다(이전과 동일). Rows는 각 결합 파일의 행을 결과 시트의 일치하는 시트에 데이터가 있는 마지막 행 아래에 추가합니다. |
| SpreadsheetSheetMatching | ByIndex(기본값)는 시트 2를 시트 2에, 시트 3을 시트 3에 추가하는 식이며; FirstSheetOnly는 각 결합 파일의 첫 번째 시트만 추가합니다. |
SkipRows는 모든 결합 파일의 처음 N 행을 건너뛰며, 예를 들어 헤더 행을 건너뛸 수 있습니다. 첫 번째 문서는 항상 전체가 사용됩니다.SkipRows와SheetMatching은Worksheets모드에서는 영향을 주지 않습니다.- 지원되는 형식: XLSX, XLS, XLSM, XLSB, XLTX, XLTM, XLT, XLAM 및 ODS.
- 전달되는 항목: 셀 값, 수식(상대 참조가 조정됨), 스타일, 병합된 셀 및 행 높이. 전달되지 않는 항목: 차트, 그림, 피벗 테이블, 테이블, 조건부 서식 및 데이터 유효성 검사.
- 음수
SkipRows는GroupDocsMergerException을 발생시킵니다(“The count of rows to skip can not be negative.”). - 행 제한을 초과하면(예: XLS/XLT는 65,536행, 기타는 1,048,576행)
GroupDocsMergerException이 발생합니다. Rows모드에서 스프레드시트가 결합 중일 때ApplyPageBuilder는GroupDocsMergerException을 발생시킵니다.
2. TIFF — PageBuilder가 첫 번째 문서의 페이지 선택을 적용
API 변경 사항은 없습니다. CreatePageBuilder와 ApplyPageBuilder는 이제 첫 번째 TIFF 문서에서 선택된 페이지를 적용합니다; 이전에는 첫 번째 문서의 모든 페이지가 항상 포함되었습니다. PageBuilder를 사용하지 않는 결합은 이전과 동일한 결과를 생성합니다.
ImageJoinOptions로 결합한 후, CreatePageBuilder와 ApplyPageBuilder는 이제 GroupDocsMergerException을 발생시킵니다. 이는 결합된 이미지가 페이지 시퀀스가 아니라 하나의 레이아웃으로 구성되기 때문입니다.
3. 라이선스 — SetLicense가 더 이상 조용히 실패하지 않음
License.SetLicense(string licensePath)는 라이선스 파일을 찾을 수 없을 때InvalidOperationException(“License not found: …”)을 발생시킵니다.License.SetLicense(Stream licenseStream)는 빈 스트림에 대해ArgumentNullException을 발생시킵니다.
4. 빈 페이지 목록으로 페이지 작업
- 페이지 번호 없이 호출된
ExtractPages와RemovePages는 이제GroupDocsMergerException을 발생시킵니다(“There are no page numbers to extract.” / “There are no page numbers to remove.”). - 페이지 번호 없이 호출된
ChangeOrientation은 이제 PDF, XPS, 워드 프로세싱, 스프레드시트 및 Visio 문서의 모든 페이지 방향을 변경합니다.
5. 미리보기 크기
GeneratePreview는 이제 요청된 Width와 Height에 맞게 모든 페이지 이미지를 크기 조정합니다—두 값이 모두 제공될 경우 정확히 해당 크기로 늘어납니다. 음수 Width 또는 Height는 이제 GroupDocsMergerException을 발생시킵니다.
6. System.Drawing.Common 및 누락된 종속성
- 크로스 플랫폼 패키지(
GroupDocs.Merger.Net60,GroupDocs.Merger.Net80,GroupDocs.Merger.Net100)는 이제System.Drawing.Common에 의존하지 않습니다. - 누락된 런타임 종속성은 이제
MissingDependencyException을 발생시키며, 누락된 구성 요소와 설치 방법을 명시합니다.
7. 지원되지 않는 형식에 이미지 및 오디오 결합
이미지 또는 오디오 파일을 지원되지 않는 문서 형식으로 결합하면 이제 FileTypeNotSupportedException이 발생합니다(“Joining ‘…’ into ‘…’ is not supported”).
새로운 기능
- 행 단위 스프레드시트 결합: 여러 스프레드시트의 행을 별도의 워크시트가 아니라 하나의 시트에 추가할 수 있으며, 헤더 행을 건너뛰거나 시트를 위치에 따라 매칭하는 옵션을 제공합니다.
- TIFF 문서용 PageBuilder:
PageBuilder로 만든 페이지 선택이 이제 첫 번째 TIFF 문서에도 적용됩니다—이전에는 해당 문서의 모든 페이지가 항상 포함되었습니다. - 정확한 미리보기 차원:
GeneratePreview는 이제 모든 문서 형식군에 대해 요청된Width와Height의 이미지를 반환합니다. - 동시성 수정: Visio 및 DOC 출력이 여러 스레드에서 처리될 때 간헐적으로 실패하던 문제가 해결되었습니다.
- 리소스 처리: 파일 경로로 열거나 결합한 문서는 더 이상 소스 파일을 열어 두지 않으며, 스트림 팩토리는 정확히 한 번만 호출됩니다.
- 명확한 오류: 이전에 조용히 실패하던 여러 작업이 이제 설명적인 예외를 발생시킵니다.
코드 예시
using GroupDocs.Merger;
using GroupDocs.Merger.Domain.Options;
using (var merger = new Merger("january.xlsx"))
{
var options = new SpreadsheetJoinOptions
{
Mode = SpreadsheetJoinMode.Rows, // append rows into the existing sheets
SkipRows = 1 // skip the header row of each joined file
};
merger.Join("february.xlsx", options);
merger.Join("march.xlsx", options);
merger.Save("q1.xlsx");
}
업데이트 받는 방법
NuGet
- Package: GroupDocs.Merger 26.9.0
- Install command:
dotnet add package GroupDocs.Merger --version 26.9.0