GroupDocs를 사용하여 PDF를 강조하고 HTML로 변환하는 방법
PDF 내부의 텍스트를 강조하고 그 결과를 스타일이 적용된 HTML 페이지로 변환하는 것은 법률 검토, e‑learning, 디지털 출판에서 흔히 요구되는 작업입니다. 이 튜토리얼에서는 GroupDocs.Redaction for .NET을 사용하여 how to highlight pdf 파일을 강조하는 방법을 배우고, 웹 포털이나 학습 관리 시스템에 삽입할 수 있는 강조된 HTML 출력을 생성합니다. 이 가이드는 환경 설정, 경로 초기화, HTML 페이지 생성, 리소스 URL 처리 등을 단계별로 안내하며, 바로 실행 가능한 C# 코드 스니펫을 제공합니다.
빠른 답변
- 어떤 라이브러리가 강조를 처리하나요? GroupDocs.Redaction for .NET.
- 지원되는 .NET 버전은 무엇인가요? .NET Framework 4.6+, .NET Core 3.1+, .NET 5/6/7.
- 프로덕션에서 라이선스가 필요합니까? 예 – 상용 라이선스를 사용하면 체험 제한이 해제됩니다.
- 수백 페이지의 대용량 PDF를 처리할 수 있나요? 예, API는 페이지를 스트리밍하고 500‑페이지 파일에 대해 200 MB 미만의 RAM을 사용합니다.
- HTML 출력이 인터랙티브한가요? 생성된 HTML은 정적이지만 완전히 스타일이 적용되어 있습니다; 인터랙티브하게 만들려면 JavaScript를 추가할 수 있습니다.
PDF 텍스트 강조란?
PDF 텍스트 강조는 선택된 문자 뒤에 색상 오버레이를 그려 문서를 볼 때 눈에 띄게 하는 시각적 마크업입니다. GroupDocs.Redaction은 이 오버레이를 PDF의 콘텐츠 스트림에 직접 추가하여 원본 레이아웃을 유지하면서 내보낸 HTML에 강조 표시를 노출합니다.
.NET용 GroupDocs.Redaction을 사용하는 이유
GroupDocs.Redaction은 70개 이상의 입력 및 출력 포맷을 지원하고, 전체 파일을 메모리에 로드하지 않고 최대 500페이지까지 PDF를 처리하며, 단일 패스 API를 제공하여 레드액션과 강조를 동시에 수행합니다. 이러한 구체적인 기능은 엔터프라이즈 규모 문서 파이프라인에 신뢰할 수 있는 선택이 됩니다.
전제 조건
- 개발 환경: Visual Studio 2022(이상) 및 .NET Core 3.1 / .NET 6 프로젝트.
- NuGet 패키지:
GroupDocs.Redaction(최신 안정 버전). - 기본 지식: C# 구문, 파일 시스템 경로, HTML 기본.
.NET용 GroupDocs.Redaction 설정 방법
라이브러리를 설치하려면 지원되는 세 가지 방법 중 하나를 선택합니다. .NET CLI 명령은 패키지를 프로젝트 파일에 추가하고, Package Manager Console은 NuGet을 통해 통합하며, UI는 그래픽 방식으로 찾아 설치할 수 있게 합니다. 세 가지 방법 모두 동일한 GroupDocs.Redaction 어셈블리를 참조하게 되므로 바로 코딩을 시작할 수 있습니다.
.NET CLI 사용:
dotnet add package GroupDocs.Redaction
Package Manager Console 사용:
Install-Package GroupDocs.Redaction
NuGet Package Manager UI 사용: “GroupDocs.Redaction”을 검색하고 Install을 클릭합니다.
설치 후, C# 파일 상단에 using 지시문을 추가합니다:
using GroupDocs.Redaction;
Feature_InitializeIndexedFileInfo 클래스는 어떻게 작동하나요?
Feature_InitializeIndexedFileInfo는 뷰어 캐시와 원본 PDF에 필요한 경로를 생성하고 저장하는 도우미 클래스입니다.
이 클래스는 뷰어와 HTML 생성기가 의존하는 파일 시스템 위치를 준비합니다. 임시 파일을 위한 전용 캐시 폴더를 만들고, 원본 PDF에서 폴더 이름을 파생시키며, 원본 문서의 절대 경로를 저장합니다. 이러한 속성은 후속 처리에서 읽기 전용 멤버로 노출됩니다.
// ```csharp
using GroupDocs.Redaction;
// Initialize the Redactor
Redactor redactor = new Redactor("your-file-path.pdf");
HTML 페이지 파일 경로를 생성하는 방법
Feature_GenerateHtmlPageFilePath는 페이지 번호를 기반으로 각 HTML 페이지에 대한 결정적인 파일 이름을 생성합니다.
이 클래스는 간단한 p{pageNumber}.html 패턴을 사용하여 각 렌더링된 페이지를 고유하게 식별하는 파일 이름을 만들고, 이전에 생성된 캐시 폴더 경로와 결합하여 HTML을 저장할 전체 파일 시스템 위치를 생성합니다. 이러한 결정적인 네이밍은 다중 페이지 PDF를 처리할 때 충돌을 방지합니다.
// ```csharp
using System.IO;
namespace GroupDocs.Search.Examples.CSharp.HighlightInHtml
{
internal class Feature_InitializeIndexedFileInfo
{
private readonly string _viewerCacheFolderPath;
private readonly string _filePath;
private readonly string _fileFolderName;
private readonly string _fileCacheFolderPath;
public Feature_InitializeIndexedFileInfo(string viewerCacheFolderPath, string filePath)
{
// Store the provided cache folder path.
_viewerCacheFolderPath = viewerCacheFolderPath;
// Store the file path.
_filePath = filePath;
// Extract and modify the file name to create a folder name.
var fileName = Path.GetFileName(_filePath);
_fileFolderName = fileName.Replace(".", "_");
// Combine paths for cache directory.
_fileCacheFolderPath = Path.Combine(viewerCacheFolderPath, _fileFolderName);
}
public string ViewerCacheFolderPath => _viewerCacheFolderPath;
public string FilePath => _filePath;
public string FileFolderName => _fileFolderName;
public string FileCacheFolderPath => _fileCacheFolderPath;
}
}
HTML 페이지 리소스 파일 경로 및 URL 생성 방법
Feature_GenerateHtmlPageResourceFilePathAndUrl는 페이지 리소스에 대한 물리적 파일 경로와 해당 웹 URL을 모두 생성합니다.
이미지, 폰트, CSS 파일과 같은 리소스는 디스크상의 위치와 브라우저가 요청할 수 있는 URL이 모두 필요합니다. 이 클래스는 페이지 번호와 리소스 이름을 받아 캐시 폴더 내부의 절대 파일 시스템 경로와 웹 서버가 매핑할 수 있는 가상 URL을 포함하는 튜플을 반환합니다. 이 접근 방식을 사용하면 생성된 페이지 전반에 걸쳐 리소스 참조가 일관됩니다.
// ```csharp
using System.IO;
namespace GroupDocs.Search.Examples.CSharp.HighlightInHtml
{
internal class Feature_GenerateHtmlPageFilePath
{
private readonly string _fileCacheFolderPath;
public Feature_GenerateHtmlPageFilePath(string fileCacheFolderPath)
{
// Initialize with cache folder path.
_fileCacheFolderPath = fileCacheFolderPath;
}
public string GetHtmlPageFilePath(int pageNumber)
{
// Create a page-specific HTML file name.
string pageFileName = $"p{pageNumber}.html";
// Combine paths for the full file location.
string pageFilePath = Path.Combine(_fileCacheFolderPath, pageFileName);
return pageFilePath;
}
}
}
실용적인 적용 사례
- Legal document review: 조항을 강조하고 HTML로 내보내며, 변호사가 브라우저에서 댓글을 달 수 있게 합니다.
- E‑learning content: 주석이 달린 강의 PDF를 검색 가능한 강조가 포함된 인터랙티브 웹 페이지로 변환합니다.
- Digital publishing: 강조된 발췌가 독자의 주목을 끄는 잡지의 웹용 버전을 제작합니다.
이러한 시나리오는 GroupDocs.Redaction이 제공하는 고성능 스트리밍 덕분에 하루에 수천 개의 문서를 처리할 수 있습니다.
일반적인 문제와 해결책
| 문제 | 원인 | 해결 방법 |
|---|---|---|
| HTML에 강조가 표시되지 않음 | 생성된 페이지에 CSS 클래스가 누락됨 | viewer의 highlight.css가 참조되었는지 확인하거나 스타일 블록을 수동으로 삽입합니다. |
| 대용량 PDF에서 메모리 부족 오류 | Document.Load를 스트리밍 없이 사용 | EnableStreaming = true 옵션을 사용한 RedactorOptions를 사용합니다. |
| 리소스 URL이 404 반환 | 잘못된 기본 URL 구성 | RedactionViewerOptions.BaseUrl을 정적 파일 폴더의 루트로 설정합니다. |
자주 묻는 질문
Q: 단일 PDF에서 여러 섹션을 한 번에 강조할 수 있나요?
A: 예. RedactionRegion 객체 컬렉션을 Redactor.Apply에 전달하면 각 영역이 동일한 작업에서 강조됩니다.
Q: API가 키워드 기반 강조를 지원하나요?
A: 지원합니다. Redactor.Search를 사용해 특정 용어의 모든 발생을 찾은 뒤, 해당 영역에 강조 레드액션을 적용합니다.
Q: 생성된 HTML이 인터랙티브한가요(예: 클릭하여 이동)?
A: 기본 출력은 정적이지만, 생성 후 JavaScript를 삽입하여 네비게이션, 툴팁 또는 사용자 정의 클릭 핸들러를 추가할 수 있습니다.
Q: 강조 색상을 어떻게 변경하나요?
A: 내보낸 HTML의 CSS 클래스 .redaction-highlight를 수정하거나, 적용 전에 RedactionOptions의 HighlightColor 속성을 설정합니다.
Q: 1 GB보다 큰 PDF에서도 작동하나요?
A: 예, 스트리밍을 활성화하고 충분한 임시 디스크 공간을 할당하면 가능합니다; API는 전체 문서를 RAM에 로드하지 않습니다.
결론
이제 GroupDocs.Redaction for .NET을 사용하여 how to highlight pdf 파일을 강조하고 강조된 HTML 페이지로 변환하는 완전한 프로덕션 준비 워크플로우를 갖추었습니다. 인덱스 파일 정보를 초기화하고, 결정적인 HTML 경로를 생성하며, 리소스 URL을 처리함으로써 이 솔루션을 .NET 기반 문서 관리 시스템, 법률 검토 포털 또는 e‑learning 플랫폼에 통합할 수 있습니다.
마지막 업데이트: 2026-08-20
테스트 환경: GroupDocs.Redaction 23.12 for .NET
작성자: GroupDocs
using System.IO;
namespace GroupDocs.Search.Examples.CSharp.HighlightInHtml
{
internal class Feature_GenerateHtmlPageResourceFilePathAndUrl
{
private readonly string _fileCacheFolderPath;
public Feature_GenerateHtmlPageResourceFilePathAndUrl(string fileCacheFolderPath)
{
// Initialize with the cache folder path.
_fileCacheFolderPath = fileCacheFolderPath;
}
public string GetHtmlPageResourceFilePath(int pageNumber, string resourceFileName)
{
// Construct a unique name for resources.
string resFileName = GetResourceFileName(pageNumber, resourceFileName);
// Combine paths to form full resource path.
string resFilePath = Path.Combine(_fileCacheFolderPath, resFileName);
return resFilePath;
}
public string GetHtmlPageResourceUrl(int pageNumber, string resourceFileName)
{
// Generate a URL-like string for the resource.
return GetResourceFileName(pageNumber, resourceFileName);
}
private static string GetResourceFileName(int pageNumber, string resourceFileName)
{
// Construct resource names based on page number and file name.
var resFileName = $"p{pageNumber}_{resourceFileName}";
return resFileName;
}
}
}