.docx Word 문서에서 이미지 검색

대본

이 문서에서는 Microsoft Docx 형식 문서에서 모든 이미지를 가져오기 위해 ASP.NET 웹 응용 프로그램을 작성하는 방법을 설명합니다.

ASP.NET 웹 애플리케이션 준비

Visual Studio를 사용하여 Razor Pages와 함께 간단한 ASP.NET Core 웹 애플리케이션을 작성합니다. NuGet 패키지 관리자를 사용하면 프로젝트에 대한 두 가지 패키지, 즉 압축 해제용 Aspose.Zip과 이미지 확인용 Aspose.Imaging을 참조하세요.
솔루션 탐색기에서 Index.cshtml 페이지를 찾으세요. 이제 <form> 태그 내에 enctype="multipart/form-data" 속성을 사용하여 해당 페이지에 양식을 추가하세요. Word 문서를 웹 서버로 전송해야 했습니다. 그런 다음 업로드된 docx 파일에 대해 file 유형의 입력 필드를 추가합니다. 다음은 양식에 대한 전체 HTML 마크업입니다.

1<form method="post" enctype="multipart/form-data">
2    <span>Microsoft *.docx document: </span>
3    <input type="file" name="uploadedFile" required="required" accept=".docx" />   
4    <br />
5    <input type="submit" value="Upload" />
6</form>

사용자 편의를 위해 Accept 속성이 추가되었습니다.

Docx 구조

Docx documet은 zip 아카이브 그 자체입니다. 삽입된 이미지가 있는 경우 추출 후 ‘word/media’ 폴더에 위치합니다. 따라서 사용자는 docx 파일을 제공하고 양식을 제출합니다. 서버 측에서는 Index.cshtml.cs 소스에 대한 적절한 OnPost 메서드를 구성해야 합니다. 이 방법 내에서 적절한 생성자를 사용하여 zip 아카이브를 추출합니다. 방법의 초안은 다음과 같습니다.

 1    public void OnPost(IFormFile uploadedFile) {
 2        using (Archive archive = new Archive(uploadedFile.OpenReadStream())) {
 3            using (Archive archive = new Archive(uploadedFile.OpenReadStream()))
 4            {
 5                foreach (var entry in archive.Entries.Where(e => e.Name.StartsWith(@"word/media", StringComparison.InvariantCultureIgnoreCase)))
 6                {
 7                ...
 8                }
 9            }	
10        }
11    }

페이지 모델 및 이미지 렌더링

추출 후에는 추출된 항목이 실제로 이미지인지 확인해야 합니다. 이를 위해 Image.CanLoad 메서드를 사용할 수 있습니다. 유효한 이미지를 승인하면 페이지 모델 내에 해당 이미지의 바이트를 저장하여 해당 그림을 렌더링해야 합니다. 속성 추가 public List<byte[]> ImageBytes { get; 개인 세트; }IndexModel로 변경합니다. 이 목록을 추출된 이미지 바이트로 채웁니다. 웹페이지에 표시하기 위해 이미지 바이트를 base64 문자열로 변환하는 데이터 URI를 사용합니다. 다음은 Index.cshtml에 있는 렌더링 Razor 코드입니다.

1    @{
2    if (Model.ImageBytes != null && Model.ImageBytes.Count > 0) {
3            <h4>Images within document:</h4>
4            foreach (byte[] image in Model.ImageBytes) {
5                <img src="data:image;base64,@Convert.ToBase64String(image)"/>
6            }
7        }
8    }

답변 마무리

그러니 모두 모아보세요. 아카이브의 각 항목이 압축 해제된 다음 이러한 바이트로 이미지가 구성됩니다.
이 샘플에서는 사용자 파일의 유효성을 검사하지 않습니다. 실제 애플리케이션에서는 업로드된 아카이브와 해당 콘텐츠를 확인해야 합니다.
아래는 최종 OnPost 메소드입니다.

 1public void OnPost(IFormFile uploadedFile)
 2{
 3    ImageBytes = new List<byte[]>();
 4
 5    using (Archive archive = new Archive(uploadedFile.OpenReadStream()))
 6    {
 7        foreach (var entry in archive.Entries.Where(e => e.Name.StartsWith(@"word/media", StringComparison.InvariantCultureIgnoreCase)))
 8        {
 9            using (MemoryStream extracted = new MemoryStream())
10            {
11                entry.Open().CopyTo(extracted);
12                extracted.Seek(0, SeekOrigin.Begin);
13
14                if (Aspose.Imaging.Image.CanLoad(extracted))
15                    ImageBytes.Add(extracted.ToArray());
16             }
17         }
18     }
19}
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.