Skip to content

Releases: rkttu/hwplibsharp

v1.1.10.5

07 Feb 06:27

Choose a tag to compare

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

06 Feb 00:39

Choose a tag to compare

  • #4 문단 치환과 관련된 테스트에서 문단 목록을 올바로 가져오지 못해 발생하는 문제를 수정하였습니다.

Full Changelog: v1.1.10.3...v1.1.10.4

v1.1.10.3

28 Jan 01:55

Choose a tag to compare

  • #7 복잡한 HWP 파일을 읽을 때 발생하는 무한 루프 수정

Full Changelog: v1.1.10.3...v1.1.10.3

v1.1.10.2

28 Jan 00:13

Choose a tag to compare

What's Changed

  • fix(test): 섹션 추가 테스트 로직 수정 및 주석 보완 (빈 문단 초기화 누락 해결) by @Peace-Min in #6
  • #5

New Contributors

Full Changelog: v1.1.10.1...v1.1.10.2

v1.1.10.1

14 Jan 07:25

Choose a tag to compare

🎯 주요 변경 사항

  • 커뮤니티 제보에 따라 #4 이슈를 만들어서 확인해본 결과 Writer 관련 코드 중 중요한 부분이 누락되어 많은 수의 HWP 파일들이 제대로 생성되지 않는 버그가 있는 것을 확인하여 디버깅 후 패치한 버전을 다시 릴리스합니다.
  • 그러나 몇 가지 문제가 더 남아있어 차기 릴리스에서 문제를 수정하고자 합니다. #4 의 문제를 해결하는데 도움을 주실 수 있는 분이 계시다면 contribution 해주시면 정말 큰 도움이 되겠습니다 .

상세 수정 사항

  1. 문단 추가 시 글꼴 정보 손실 문제 수정 (FaceNameAdder)
    • 문제: 다른 HWP 파일에서 문단을 복사하여 추가할 때, 새로운 글꼴 정보가 대상 파일의 DocInfo에 제대로 추가되지 않아 파일이 손상되는 문제가 있었습니다.
    • 원인: IReadOnlyList를 .ToList()로 복사한 후 새 항목을 추가하여, 원본 DocInfo에는 반영되지 않았습니다.
    • 수정: DocInfo.AddNewXxxFaceName() 메서드를 직접 호출하여 글꼴 정보를 올바르게 추가하도록 수정했습니다.
  2. 문단 헤더 플래그 설정 오류 수정 (ForParagraph)
    • 문제: 문단 저장 시 HasTitleMark와 HasTab 플래그가 Java 원본과 다르게 동작하여 일부 HWP 파일이 손상되는 문제가 있었습니다.
    • 원인: Java의 switch 문에서 case 8이 case 9로 폴스루(fall-through)되는 로직이 C# 변환 시 누락되었습니다.
    • 수정: C#에서 goto case 9를 사용하여 Java 원본과 동일한 폴스루 동작을 구현했습니다.

신규 API

  1. ParaText.Clear() 메서드 추가
    • 문단의 글자 리스트를 모두 삭제하는 기능을 추가했습니다.
    • Java 원본의 getCharList().clear() 동작과 동일한 기능을 제공합니다.
  2. ParaCharShape.RemoveParaCharShapeAt(int index) 메서드 추가
    • 지정된 인덱스의 글자 모양 정보를 삭제하는 기능을 추가했습니다.
    • Java 원본의 getPositonShapeIdPairList().remove(index) 동작과 동일한 기능을 제공합니다.

📦 설치 방법

C# 프로젝트에는 다음과 같이 dotnet CLI를 사용하여 추가할 수 있습니다.

dotnet add package HwpLibSharp --version 1.1.10.1

File-based App에서는 다음과 같이 사용할 수 있습니다.

#:package HwpLibSharp@1.1.10.1

🙏 감사의 말

원본 hwplib 라이브러리를 만들어주신 @neolord0 님께 감사드립니다.

v1.1.10

08 Jan 12:51

Choose a tag to compare

🎯 주요 변경 사항

  • 동시에 파일을 읽는 동작을 허용하도록 File Open 옵션 플래그에 Shared Read를 추가하였습니다.
  • Java Maven 버전 번호와 .NET NuGet 패키지 버전 번호가 서로 상이한 것을 발견하여 동일하게 변경했습니다. Maven 버전 1.1.10 버전 기준으로 작업한 것이므로 버전 번호를 수정했습니다.

📦 설치 방법

C# 프로젝트에는 다음과 같이 dotnet CLI를 사용하여 추가할 수 있습니다.

dotnet add package HwpLibSharp --version 1.1.10

File-based App에서는 다음과 같이 사용할 수 있습니다.

#:package HwpLibSharp@1.1.10

🙏 감사의 말

원본 hwplib 라이브러리를 만들어주신 @neolord0 님께 감사드립니다.

v1.1.7

07 Jan 12:39

Choose a tag to compare

v1.1.7 릴리스 노트

원본 hwplib의 최신 버전인 v1.1.7 버전에 대응되는 릴리스를 정식으로 전환하여 출시합니다.

🎯 주요 변경 사항

  • #3 XML 문서를 nuget 패키지에 포함시켰습니다.

📦 설치 방법

C# 프로젝트에는 다음과 같이 dotnet CLI를 사용하여 추가할 수 있습니다.

dotnet add package HwpLibSharp --version 1.1.7

File-based App에서는 다음과 같이 사용할 수 있습니다.

#:package HwpLibSharp@1.1.7

...

🙏 감사의 말

원본 hwplib 라이브러리를 만들어주신 @neolord0 님께 감사드립니다.

v1.1.7-preview.2

20 Dec 12:56

Choose a tag to compare

v1.1.7-preview.2 Pre-release
Pre-release

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.0net472 두 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

16 Dec 14:28

Choose a tag to compare

v1.1.7-preview.1 Pre-release
Pre-release

📋 릴리즈 노트 - 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 님께 감사드립니다.