DevExpress RichEditControl 전자결재 구현 시 반드시 피해야 하는 5가지 실수
전자결재 시스템을 개발할 때 많은 개발자들이 Word 기반 문서 편집 컨트롤을 사용합니다.저 역시 ERP 및 기업 시스템을 개발하면서 DevExpress RichEditControl을 활용해 전자결재 문서를 구현했습니다.처음에는 잘 동작하던 기능이 1년 이상 문제없이 운영되다가 갑자기 깨지는 경우가 있습니다.특히 아래와 같은 현상이 대표적입니다.결재 도장…
전자결재 시스템을 개발할 때 많은 개발자들이 Word 기반 문서 편집 컨트롤을 사용합니다.
저 역시 ERP 및 기업 시스템을 개발하면서 DevExpress RichEditControl을 활용해 전자결재 문서를 구현했습니다.
처음에는 잘 동작하던 기능이 1년 이상 문제없이 운영되다가 갑자기 깨지는 경우가 있습니다.
특히 아래와 같은 현상이 대표적입니다.
결재 도장이 갑자기 문서 상단에 나타난다
이미지 위치가 틀어진다
템플릿은 그대로인데 레이아웃이 깨진다
이런 문제는 대부분 코드 문제가 아니라 구조적인 설계 문제입니다.
전자결재 시스템을 구현할 때 반드시 피해야 할 5가지 실수를 정리해 보겠습니다.
1. 도장 이미지를 Floating Shape로 삽입하는 구조
많은 예제에서 다음과 같은 방식으로 이미지를 삽입합니다.
Shape imageShape = document.InsertPicture(position, image);
imageShape.TextWrapping = TextWrappingType.BehindText;
이 방식은 **Floating Object(떠 있는 도형)**을 생성합니다.
즉 이미지 위치가 다음 요소에 의해 계산됩니다.
문단 위치
페이지 마진
폰트 높이
Word 레이아웃 엔진
DPI 설정
이 중 하나라도 바뀌면 이미지 위치가 완전히 달라질 수 있습니다.
실제 현상
도장이 문서 상단으로 이동
페이지 중앙에 떠버림
표 밖으로 튀어나옴
해결 방법
전자결재에서는 Inline Image 방식이 정석입니다.
DocumentImage img = document.Images.Insert(position, image);
img.Size = new SizeF(width, height);
이 방식은 텍스트와 동일한 흐름으로 처리되기 때문에 레이아웃이 깨질 가능성이 거의 없습니다.
2. Word 레이아웃 엔진에 의존하는 구조
RichEditControl은 내부적으로 Word 레이아웃 규칙을 따릅니다.
따라서 다음 환경이 변경되면 동일한 문서라도 결과가 달라질 수 있습니다.
Windows 업데이트
Office 업데이트
폰트 변경
DPI 변경
특히 Floating 객체는 이 영향을 크게 받습니다.
전자결재 시스템은 환경 변화에 영향을 받지 않는 구조로 만들어야 합니다.
3. 템플릿(docx)에 너무 많은 레이아웃을 넣는 것
전자결재 템플릿을 만들 때 종종 이런 방식으로 설계합니다.
Word에서 정교하게 위치 조정
이미지 위치를 수동 배치
텍스트 박스 사용
하지만 Word 문서는 사용자가 한번만 열어서 저장해도 내부 XML 구조가 바뀔 수 있습니다.
그래서 운영 중 이런 일이 발생합니다.
템플릿 수정 후 레이아웃 붕괴
이미지 위치 깨짐
표 구조 변경
안정적인 템플릿 구조
전자결재 문서는 단순하게 유지하는 것이 좋습니다.
추천 구조
Table 기반 레이아웃
Placeholder 텍스트 사용
코드에서 데이터 삽입
예
결재자1 결재자2 결재자3 __SIGN1__ __SIGN2__ __SIGN3__
4. Placeholder 삭제 방식 실수
이미지 삽입 시 다음과 같은 코드가 자주 사용됩니다.
document.Delete(range);
이렇게 하면 문서 구조가 바뀔 수 있습니다.
특히 Table Cell 내부에서는
문단 구조 변경
셀 높이 변경
이 발생할 수 있습니다.
더 안전한 방식은
document.Replace(range, "");
즉 텍스트만 치환하고 문단 구조는 유지하는 방식입니다.
5. 템플릿을 Word에서 직접 수정하는 운영 방식
전자결재 시스템에서 가장 많이 발생하는 문제입니다.
운영 중 누군가 Word에서 템플릿을 수정하면
Table 구조 변경
Paragraph anchor 변경
Compatibility mode 변경
이 발생합니다.
그래서 개발자는 템플릿 관리 정책을 반드시 만들어야 합니다.
추천 방법
템플릿 수정 권한 제한
템플릿 버전 관리
시스템에서 템플릿 배포
전자결재 시스템에서 가장 중요한 것은 문서가 항상 동일하게 출력되는 안정성입니다.
특히 도장, 서명 같은 요소는 레이아웃이 조금만 틀어져도 사용자 신뢰가 크게 떨어집니다.
제가 실제 프로젝트를 진행하며 얻은 결론은 다음과 같습니다.
전자결재 문서에서
Floating Object는 사용하지 않는다
이미지와 도장은 Inline 방식으로 처리한다
Word 템플릿은 최대한 단순하게 유지한다
이 세 가지만 지켜도 대부분의 레이아웃 문제를 예방할 수 있습니다.
기업 시스템 개발에서는 작은 구현 방식 하나가
1년 후 운영 안정성을 좌우하기도 합니다.
댓글 0
첫 댓글을 남겨보세요.