Word 문서에 .NET에서 그리기 도형을 추가하는 방법

Word 문서에 .NET에서 그리기 도형을 추가하는 방법

이 가이드는 .NET용 Aspose.Words FOSS를 사용하여 Word 문서의 그리기 레이어에 콘텐츠를 추가하는 방법을 보여줍니다: AutoShape 삽입, 그림 추가, 위치 지정 및 텍스트 감싸기, 채우기 및 스타일 지정, 여러 도형 그룹화, 워터마크 설정. .NET용 Aspose.Words FOSS는 NuGet을 통해 또는 소스에서 빌드하여 사용할 수 있습니다.

단계별 가이드

1단계: 라이브러리 가져오기

리포지토리를 복제하고 빌드합니다 Aspose.Words.sln Release 구성에서, 그런 다음 프로젝트 참조를 추가합니다 Aspose.Words.csproj 귀하의 .NET 프로젝트에서, 설명된 대로 설치 가이드. 추가 using Aspose.Words; and using Aspose.Words.Drawing; shapes와 함께 작동하는 모든 파일의 상단에.


2단계: AutoShape 추가

new Shape(doc, shapeType)을 사용해 도형을 직접 구성합니다. 여기서 shapeType은 ShapeType 값이며, 예를 들어 Rectangle, Ellipse, Star, 또는 TextBox이 있습니다. 그런 다음 DocumentBuilder.InsertNode(node)으로 트리에 삽입합니다. Shape은 여러분이 생성하고 구성하는 구체적이며 sealed 클래스이며, 추상 ShapeBase을 상속받습니다. 추상 ShapeBase은 위치 (Left, Top, Width, Height, Rotation)와 서식 하위 객체 (Fill, Stroke, ShadowFormat, Glow, Reflection)를 정의하며, 이는 GroupShape과 공유됩니다.


단계 3: 그림 추가

DocumentBuilder.InsertImage은(는) 그림을 직접 삽입하는 경로입니다: 오버로드는 Image, 파일 경로, Stream, 또는 원시 바이트 배열을 허용하며, 명시적인 width/height 또는 전체 위치 인수(horzPos, left, vertPos, top, width, height, wrapType)를 받는 추가 오버로드가 있습니다. 결과 Shape의 ImageData 속성에 그림 데이터가 저장됩니다 — 이미지를 교체하려면 ImageData.SetImage(...)를 호출하고, 기본 조정을 위해 CropTop/CropBottom/CropLeft/CropRight, Brightness, Contrast, GrayScale를 사용하십시오.


단계 4: 모양 위치 지정 및 텍스트 줄 바꿈

인라인 모양(InsertImage의 기본 결과)은 주변 텍스트와 함께 흐르며 플로팅될 때까지 위치 속성을 무시합니다 — 모양이 어떤 모드에 있는지 확인하려면 IsInline을 확인하십시오. 모양을 플로팅하려면 WrapType를 인라인이 아닌 값으로 설정하고, RelativeHorizontalPosition/RelativeVerticalPosition(각각 Page, Margin, Column 또는 유사한 앵커를 기준)와 함께 Left/Top 오프셋을 설정합니다. WrapSide은 측면별 줄 바꿈을 제어하고, HorizontalAlignment/VerticalAlignment는 명시적 오프셋 대신 간단한 상대 정렬을 처리합니다.


단계 5: 모양 채우기 및 스타일 지정

Shape.Fill ( Fill 객체) 은 모양의 내부를 채웁니다: 단색은 Fill.Solid(color), 그라디언트는 Fill.OneColorGradient(...)/Fill.TwoColorGradient(...), 패턴은 Fill.Patterned(patternType), 그림 채우기는 Fill.SetImage(...) — 현재 활성화된 항목은 FillType이 보고합니다. 외곽선은 Stroke 속성에서 가져옵니다. 효과의 경우, ShadowFormat, Glow(GlowFormat), Reflection(ReflectionFormat), SoftEdge(SoftEdgeFormat) 각각이 자체 설정과 효과를 없애는 Remove() 메서드를 제공합니다.


단계 6: 여러 모양 그룹화

DocumentBuilder.InsertGroupShape(shapes)을 사용하여 여러 모양을 하나의 단위로 결합하면 GroupShape을 반환합니다. GroupShape 자체도 ShapeBase이므로 그룹 전체에 적용되는 자체 Fill, ShadowFormat, Glow, Reflection을 보유합니다; 그룹의 좌표 변환이 일관되게 유지되도록 개별 자식이 아니라 GroupShape을 이동하거나 크기를 조정하십시오. 텍스트를 포함하는 모양의 경우, Shape.TextBox ( TextBox 객체) 가 패딩(InternalMarginLeft/Right/Top/Bottom), 자동 크기 조정(FitShapeToText), 텍스트 방향(LayoutFlow), 수직 정렬(VerticalAnchor)을 제어합니다.


7단계: 워터마크 추가

Document.Watermark은(는) 수동으로 삽입한 도형과 무관하게 문서 전체에 단일 워터마크를 관리합니다. 텍스트 워터마크는 Watermark.SetText(text) 또는 SetText(text, options)를 호출하고, 그림 워터마크는 SetImage(...)을 호출하십시오; Watermark.Remove()는 이를 지우고, Watermark.Type는 현재 WatermarkType(Text, Image, 또는 None)을 보고합니다. TextWatermarkOptions은 FontFamily, FontSize, Color, 및 Layout(WatermarkLayout.Horizontal 또는 Diagonal)를 설정합니다; ImageWatermarkOptions은 Scale와 IsWashout를 설정합니다.

일반적인 문제 및 해결 방법

Setting Left/Top shape에 적용해도 눈에 보이는 효과가 없습니다. shape는 여전히 인라인 상태입니다 (IsInline == true). 설정 WrapType 부동값으로 설정하고 RelativeHorizontalPosition/RelativeVerticalPosition 이렇게 하면 오프셋 속성이 적용됩니다.

Shape.ImageData 예외를 발생시키거나 아무것도 반환하지 않습니다. 해당 도형은 그림 도형이 아닙니다. 확인하세요 Shape.HasImage 읽기 전에 ImageData.

그룹의 하위 도형이 함께 이동하지 않습니다. 자식 도형들이 그룹을 통해서가 아니라 개별적으로 위치가 변경되었습니다. 이동하거나 크기를 조정하세요 GroupShape 그 자체이므로 좌표 변환이 모든 자식에게 적용됩니다.

워터마크 텍스트가 요청한 폰트를 사용하지 않습니다. 아니오 TextWatermarkOptions 전달되었습니다. 호출 Watermark.SetText(text, options) 와 함께 TextWatermarkOptions 인스턴스가 FontFamily 설정됩니다.

자주 묻는 질문

Shape와 ShapeBase의 차이점은 무엇입니까?

ShapeBase은 Shape와 GroupShape가 공유하는 추상 기본 클래스입니다. 두 종류를 균일하게 처리해야 할 경우 ShapeBase에 대해 코드를 작성하십시오; 단일 드로잉 객체에만 해당되는 멤버(예: ImageData)는 Shape를 직접 사용하십시오.

특정 크기의 그림을 삽입하려면 어떻게 해야 하나요?

명시적인 width 및 height 인수를 허용하는 DocumentBuilder.InsertImage 오버로드를 사용하고, 이미지 소스(예: Image, 파일 경로, Stream 또는 바이트 배열)와 함께 제공합니다.

도형을 텍스트와 인라인으로 배치하지 않고 떠 있도록 하려면 어떻게 해야 하나요?

WrapType을 인라인이 아닌 값으로 설정하고, RelativeHorizontalPosition / RelativeVerticalPosition를 설정하여 Left/Top 오프셋이 페이지, 여백 또는 열을 기준으로 해석되도록 합니다.

문서에 텍스트 워터마크와 이미지 워터마크를 동시에 적용할 수 있나요?

No. Document.Watermark.Type는 현재 워터마크 유형을 보고합니다; SetText 또는 SetImage를 다시 호출하면 이전에 설정된 워터마크가 교체됩니다.

모양에서 그림자나 반사를 어떻게 제거하나요?

해당 서식 개체에 Remove()를 호출하십시오 — Shape.ShadowFormat.Remove() 또는 Shape.Reflection.Remove().

참조

 한국어