Releases: rkttu/hwplibsharp
v1.1.10.5
Upstream 구현 동기화
- feff19ee 이슈 #303: HWPReader의 fromFile(File f) vs fromFile(String path) 동작 차이, script 부분이 없는 파일 읽을 때 오류 해결.. (neolord, 2026-02-04)
기타 수정 사항
- 코드 주석 상에서 한글 인코딩이 깨진 부분을 수정하고, 구현이 끝나지 않은 코드나 사용하지 않는 파라미터를 제거하여 코드를 최적화
Full Changelog: v1.1.10.4...v1.1.10.5
v1.1.10.4
v1.1.10.3
v1.1.10.2
What's Changed
- fix(test): 섹션 추가 테스트 로직 수정 및 주석 보완 (빈 문단 초기화 누락 해결) by @Peace-Min in #6
- #5
New Contributors
- @Peace-Min made their first contribution in #6
Full Changelog: v1.1.10.1...v1.1.10.2
v1.1.10.1
🎯 주요 변경 사항
- 커뮤니티 제보에 따라 #4 이슈를 만들어서 확인해본 결과 Writer 관련 코드 중 중요한 부분이 누락되어 많은 수의 HWP 파일들이 제대로 생성되지 않는 버그가 있는 것을 확인하여 디버깅 후 패치한 버전을 다시 릴리스합니다.
- 그러나 몇 가지 문제가 더 남아있어 차기 릴리스에서 문제를 수정하고자 합니다. #4 의 문제를 해결하는데 도움을 주실 수 있는 분이 계시다면 contribution 해주시면 정말 큰 도움이 되겠습니다 .
상세 수정 사항
- 문단 추가 시 글꼴 정보 손실 문제 수정 (FaceNameAdder)
- 문제: 다른 HWP 파일에서 문단을 복사하여 추가할 때, 새로운 글꼴 정보가 대상 파일의 DocInfo에 제대로 추가되지 않아 파일이 손상되는 문제가 있었습니다.
- 원인: IReadOnlyList를 .ToList()로 복사한 후 새 항목을 추가하여, 원본 DocInfo에는 반영되지 않았습니다.
- 수정: DocInfo.AddNewXxxFaceName() 메서드를 직접 호출하여 글꼴 정보를 올바르게 추가하도록 수정했습니다.
- 문단 헤더 플래그 설정 오류 수정 (ForParagraph)
- 문제: 문단 저장 시 HasTitleMark와 HasTab 플래그가 Java 원본과 다르게 동작하여 일부 HWP 파일이 손상되는 문제가 있었습니다.
- 원인: Java의 switch 문에서 case 8이 case 9로 폴스루(fall-through)되는 로직이 C# 변환 시 누락되었습니다.
- 수정: C#에서 goto case 9를 사용하여 Java 원본과 동일한 폴스루 동작을 구현했습니다.
신규 API
- ParaText.Clear() 메서드 추가
- 문단의 글자 리스트를 모두 삭제하는 기능을 추가했습니다.
- Java 원본의 getCharList().clear() 동작과 동일한 기능을 제공합니다.
- ParaCharShape.RemoveParaCharShapeAt(int index) 메서드 추가
- 지정된 인덱스의 글자 모양 정보를 삭제하는 기능을 추가했습니다.
- Java 원본의 getPositonShapeIdPairList().remove(index) 동작과 동일한 기능을 제공합니다.
📦 설치 방법
C# 프로젝트에는 다음과 같이 dotnet CLI를 사용하여 추가할 수 있습니다.
dotnet add package HwpLibSharp --version 1.1.10.1File-based App에서는 다음과 같이 사용할 수 있습니다.
#:package HwpLibSharp@1.1.10.1🙏 감사의 말
원본 hwplib 라이브러리를 만들어주신 @neolord0 님께 감사드립니다.
v1.1.10
🎯 주요 변경 사항
- 동시에 파일을 읽는 동작을 허용하도록 File Open 옵션 플래그에 Shared Read를 추가하였습니다.
- Java Maven 버전 번호와 .NET NuGet 패키지 버전 번호가 서로 상이한 것을 발견하여 동일하게 변경했습니다. Maven 버전 1.1.10 버전 기준으로 작업한 것이므로 버전 번호를 수정했습니다.
📦 설치 방법
C# 프로젝트에는 다음과 같이 dotnet CLI를 사용하여 추가할 수 있습니다.
dotnet add package HwpLibSharp --version 1.1.10File-based App에서는 다음과 같이 사용할 수 있습니다.
#:package HwpLibSharp@1.1.10🙏 감사의 말
원본 hwplib 라이브러리를 만들어주신 @neolord0 님께 감사드립니다.
v1.1.7
v1.1.7 릴리스 노트
원본 hwplib의 최신 버전인 v1.1.7 버전에 대응되는 릴리스를 정식으로 전환하여 출시합니다.
🎯 주요 변경 사항
- #3 XML 문서를 nuget 패키지에 포함시켰습니다.
📦 설치 방법
C# 프로젝트에는 다음과 같이 dotnet CLI를 사용하여 추가할 수 있습니다.
dotnet add package HwpLibSharp --version 1.1.7File-based App에서는 다음과 같이 사용할 수 있습니다.
#:package HwpLibSharp@1.1.7
...🙏 감사의 말
원본 hwplib 라이브러리를 만들어주신 @neolord0 님께 감사드립니다.
v1.1.7-preview.2
v1.1.7-preview.2 릴리스 노트
🎯 주요 변경 사항
🌐 다중 프레임워크 지원 확대
이번 릴리스에서 TFM(Target Framework Moniker) 지원이 대폭 확대되었습니다:
| TFM | 용도 | 신규 |
|---|---|---|
netstandard2.0 |
.NET Core 2.0+, Mono, Xamarin, Unity | ✅ |
net472 |
.NET Framework 4.7.2+ (Windows) | ✅ |
net8.0 |
.NET 8+ (Native AOT 지원) | ✅ |
⚡ Native AOT 호환
- .NET 8 이상에서 Native AOT 컴파일을 공식 지원합니다
Enum.GetValues<T>()를 활용한 AOT 친화적 코드로 개선- 조건부 컴파일을 통해 각 TFM에 최적화된 코드 실행
🔧 C# 언어 버전 호환성 개선
- C# 8.0으로 언어 버전 통일 (netstandard2.0 호환)
- 파일 범위 네임스페이스를 전통적 네임스페이스로 변환
- C# 12 컬렉션 식 제거
- 비트 연산 호환성 수정
📝 커밋 목록
| 커밋 | 설명 |
|---|---|
a8a3999 |
.NET 8 및 Native AOT 지원, 빌드/테스트 개선 |
5564ed2 |
.NET Framework 4.7.2 지원 및 CI 파이프라인 개선 |
79d4cb8 |
C# 8.0 호환성 개선: 문법 및 LangVersion 변경 |
71c37d1 |
파일 기반 네임스페이스를 전통적인 방식으로 치환 |
99681a7 |
C# 호환성 개선: 비트 연산 수정 및 LangVersion 변경 |
4087b0a |
C# 12 컬렉션 식 제거 및 LangVersion 11.0으로 변경 |
8886b74 |
netstandard 2.0으로 마이그레이션 |
e0130cf |
CI/CD 기준 버전을 .NET 10으로 변경 및 솔루션 파일 .slnx로 전환 |
🔄 CI/CD 개선
- Windows 러너에서 모든 TFM 빌드 및 테스트
net8.0및net472두 TFM에서 테스트 실행- 모든 TFM이 NuGet 패키지에 포함되도록 개선
📖 문서 개선
- README에 Blazor 지원 정보 추가
- Native AOT 호환성 정보 추가
- 시스템 요구 사항 테이블 업데이트
- 코드 샘플 추가
📦 설치 방법
dotnet add package HwpLibSharp --version 1.1.7-preview.2
⚠️ 주의사항
이 버전은 프리뷰(preview) 버전입니다.
- API가 예고 없이 변경될 수 있습니다
- 프로덕션 환경에서의 사용은 권장하지 않습니다
🙏 감사의 말
원본 hwplib 라이브러리를 만들어주신 @neolord0 님께 감사드립니다.
Full Changelog: v1.1.7-preview.1...v1.1.7-preview.2
v1.1.7-preview.1
📋 릴리즈 노트 - v1.1.7-preview.1
🎉 첫 번째 프리뷰 릴리즈
HwpLibSharp의 첫 번째 공개 프리뷰 버전입니다. 이 라이브러리는 neolord0/hwplib Java 라이브러리를 .NET으로 포팅한 것입니다.
✨ 주요 기능
HWP 파일 읽기/쓰기
- HWP 파일 읽기 및 쓰기 기본 기능 지원
- URL을 통한 HWP 파일 직접 읽기 기능
- 압축된 HWP 데이터 복원 로직 구현
문서 구조 파싱
- Section 본문 파싱 및 문단 구조 해석
- 구역/단 정의 컨트롤 파서
- HWP 표(테이블) 컨트롤 파싱
- GSO(그래픽 객체) 및 일반 컨트롤 파싱
- 표 행 및 셀 개수 관리 기능
.NET 최적화
- .NET 8.0 타겟
- Native AOT 빌드 지원 - 빠른 시작 시간과 낮은 메모리 사용량
- OpenMcdf 라이브러리를 사용한 OLE 복합 문서 처리 (Apache POI 대체)
- 유닛 테스트 구간에서 SkiaSharp을 사용한 이미지 처리
🛠️ 개선 사항
- HWP 컨트롤 null 체크 및 타입 안전성 강화
- 컨트롤 파싱 구조 단순화 및 불필요 코드 제거
- CharList 개수 검사 로직 분리 및 조건 개선
- CompoundFileWriter 자원 관리 개선
🧪 테스트
- 테스트 커버리지 100% 달성
- Java 원본과 테스트 케이스 통일
- 구버전 HWP 파일 테스트 활성화
📦 설치 방법
dotnet add package HwpLibSharp --version 1.1.7-preview.1⚠️ 주의사항
이 버전은 프리뷰(preview) 버전입니다.
- API가 예고 없이 변경될 수 있습니다
- 프로덕션 환경에서의 사용은 권장하지 않습니다
🙏 감사의 말
원본 hwplib 라이브러리를 만들어주신 @neolord0 님께 감사드립니다.