GroupDocs.Editor for .NET을 사용한 PDF 프로그래밍 편집

소개

.NET 애플리케이션에서 PDF를 프로그래밍 방식으로 편집해야 한다면, 올바른 튜토리얼을 찾으신 것입니다. 이 가이드에서는 GroupDocs.Editor 설치, 비밀번호로 보호된 PDF 로드, 파일을 스트림으로 읽기, 페이지 매김 활성화, 편집된 문서 저장까지 모든 단계를 안내합니다. 단어 하나를 수정하든 대용량 PDF를 처리하든, 라이브러리가 작업을 간편하고 신뢰성 있게 수행하는 모습을 확인할 수 있습니다.

빠른 답변

  • UI 없이 PDF를 편집할 수 있나요? 예, GroupDocs.Editor는 코드만으로 완전히 동작합니다.
  • 비밀번호로 보호된 PDF를 지원하나요? 물론입니다 – 로드 옵션에 비밀번호를 제공하면 됩니다.
  • 대용량 PDF의 제한은 무엇인가요? 스트리밍 기법을 사용해 500 MB 이상의 파일도 처리할 수 있습니다.
  • 페이지 매김 모드를 어떻게 활성화하나요? 편집 옵션에서 EnablePagination = true 로 설정합니다.
  • 프로덕션에 라이선스가 필요합니까? 비체험 배포에는 상용 라이선스가 필요합니다.

프로그래밍 방식으로 PDF를 편집한다는 의미는?

Programmatically edit pdf는 GUI 편집기를 사용하지 않고 코드를 통해 PDF 파일의 내용을 수정하는 것을 의미합니다. GroupDocs.Editor for .NET은 C#에서 직접 텍스트, 이미지 및 레이아웃 요소를 교체할 수 있는 완전한 API를 제공합니다. 이 접근 방식은 자동화, 배치 처리 및 웹 서비스와의 통합을 가능하게 하며, 개발자가 사용자 개입 없이 변경을 적용할 수 있게 합니다. API는 PDF 구조를 추상화하여 고수준 객체로 작업할 수 있게 하고, 라이브러리가 파일 포맷의 복잡성을 처리합니다.

using System;
using GroupDocs.Editor.Formats;
using GroupDocs.Editor.HtmlCss.Resources;
using GroupDocs.Editor.Options;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;

.NET용 GroupDocs.Editor를 사용하는 이유는?

GroupDocs.Editor는 30개 이상의 문서 형식을 지원하며, 전체 파일을 메모리에 로드하지 않고 500 MB까지의 PDF를 편집할 수 있어 고처리량 백엔드 서비스에 적합합니다. 내장된 페이지 매김 기능은 다중 페이지 PDF가 편집 후에도 올바른 페이지 구분을 유지하도록 보장하고, 라이브러리는 네이티브 스트리밍을 제공해 파일을 효율적으로 읽고 쓸 수 있습니다.

전제 조건

시작하기 전에 다음이 필요합니다:

  1. .NET 개발 환경 – Visual Studio, Rider 또는 .NET 6+을 지원하는 IDE.
  2. GroupDocs.Editor for .NET – 라이브러리를 release page에서 다운로드하고 설치합니다.
  3. 기본 C# 지식 – 클래스, 스트림 및 예외 처리에 대한 이해가 도움이 됩니다.

네임스페이스 가져오기

코드를 작성하기 전에 프로젝트에 필요한 네임스페이스가 임포트되어 있는지 확인하십시오:

using System;
using GroupDocs.Editor.Formats;
using GroupDocs.Editor.HtmlCss.Resources;
using GroupDocs.Editor.Options;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;

비밀번호로 보호된 PDF를 어떻게 로드합니까?

PdfLoadOptions는 비밀번호 및 메모리 설정을 포함한 PDF 로드 옵션을 정의합니다. 보호된 PDF를 로드하려면 PdfLoadOptions 인스턴스를 생성하고 Password 속성을 문서 비밀번호로 설정한 뒤 이 객체를 에디터에 전달합니다. 이렇게 하면 편집 작업 전에 파일이 복호화됩니다.

Options.PdfLoadOptions loadOptions = new PdfLoadOptions();
// If the document is password-protected
loadOptions.Password = "your_password";

단계 1: 입력 파일 경로 가져오기

먼저 PDF 문서의 경로를 지정해야 합니다. 이 튜토리얼에서는 샘플 PDF 파일이 있다고 가정합니다.

string inputFilePath = "Your Sample Document.pdf";

PDF 파일 스트림을 어떻게 읽나요?

FileStream은 디스크에 있는 파일을 읽고 쓸 수 있는 스트림을 제공합니다. 이를 사용해 PDF를 읽기 모드로 열면 에디터가 파일을 독점적으로 잠그지 않고 처리할 수 있습니다. 예: new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read)는 최적의 성능과 안전한 동시 읽기를 보장합니다.

using (FileStream fs = File.OpenRead(inputFilePath))

단계 2: 경로에서 스트림 생성

앞서 지정한 경로에서 파일 스트림을 생성합니다. 이 스트림은 PDF 문서를 읽는 데 사용됩니다.

using (FileStream fs = File.OpenRead(inputFilePath))

비밀번호로 보호된 PDF의 로드 옵션을 어떻게 구성합니까?

PdfLoadOptions는 비밀번호 및 메모리 사용량을 포함한 PDF 로드 옵션을 정의합니다. 인스턴스를 만든 후 Password 속성에 문서 비밀번호를 할당합니다. 대용량 PDF의 경우 UseMemoryCache = false 로 설정해 메모리 사용량을 줄일 수 있습니다. 이러한 설정은 암호화된 파일과 대용량 파일을 효율적으로 처리하도록 로더를 준비합니다.

Options.PdfLoadOptions loadOptions = new PdfLoadOptions();
// If the document is password-protected
loadOptions.Password = "your_password";

단계 3: 문서 로드 옵션 생성

PDF 문서를 로드하려면 로드 옵션을 지정해야 합니다. PDF가 비밀번호로 보호된 경우 여기에서 비밀번호를 제공하면 됩니다.

Options.PdfLoadOptions loadOptions = new PdfLoadOptions();
// If the document is password-protected
loadOptions.Password = "your_password";

스트림과 옵션으로 Editor를 초기화하는 방법은?

Editor는 문서를 로드하고 편집 기능을 제공하는 주요 클래스입니다. 파일 스트림을 반환하는 대리자와 앞서 구성한 로드 옵션을 반환하는 대리자를 전달해 인스턴스를 생성합니다. 이렇게 하면 PDF의 메모리 내 표현이 생성되어 추가 조작이 가능해집니다.

using (Editor editor = new Editor(delegate { return fs; }, delegate { return loadOptions; }))
{
    var documentInfo = editor.GetDocumentInfo(null);

단계 4: 문서를 Editor 인스턴스로 로드

이제 파일 스트림과 로드 옵션을 사용해 Editor 인스턴스에 문서를 로드합니다.

using (Editor editor = new Editor(delegate { return fs; }, delegate { return loadOptions; }))
{
    var documentInfo = editor.GetDocumentInfo(null);

PDF 편집 시 페이지 매김을 활성화하는 방법은?

PdfEditOptions는 PDF 파일의 편집 설정을 지정합니다. 이 클래스의 인스턴스를 생성하고 EnablePagination = true 로 설정합니다. 페이지 매김을 활성화하면 수정 후에도 원본 페이지 구분과 레이아웃이 유지되어 출력 PDF가 원본과 동일한 시각적 구조를 유지합니다.

Options.PdfEditOptions editOptions = new PdfEditOptions();
editOptions.EnablePagination = true;

단계 5: 편집 옵션 생성

문서에 대한 편집 옵션을 설정합니다. 여기서는 페이지 매김 모드를 활성화합니다.

Options.PdfEditOptions editOptions = new PdfEditOptions();
editOptions.EnablePagination = true;

편집 가능한 중간 문서를 생성하는 방법은?

CreateEditableDocument는 로드된 문서의 편집 가능한 표현을 생성합니다. 이전에 정의한 PdfEditOptions를 전달해 Editor 인스턴스에서 이 메서드를 호출합니다. 메서드는 HTML과 유사한 콘텐츠를 포함하는 EditableDocument를 반환하며, 이를 프로그래밍 방식으로 변경한 뒤 PDF로 다시 저장할 수 있습니다.

using (EditableDocument beforeEdit = editor.Edit(editOptions))
{
    // Extract textual content as HTML markup
    string originalContent = beforeEdit.GetContent();
    List<IHtmlResource> allResources = beforeEdit.AllResources;

단계 6: 중간 편집 가능한 문서 생성

에디터 인스턴스와 편집 옵션을 사용해 중간 편집 가능한 문서를 생성합니다.

using (EditableDocument beforeEdit = editor.Edit(editOptions))
{
    // Extract textual content as HTML markup
    string originalContent = beforeEdit.GetContent();
    List<IHtmlResource> allResources = beforeEdit.AllResources;

편집 가능한 콘텐츠 내 텍스트를 교체하는 방법은?

EditableDocument는 문서 내용을 편집 가능한 형식으로 보유합니다. Content 속성을 통해 문서의 HTML 표현 문자열을 얻을 수 있습니다. 필요에 따라 Replace 같은 표준 C# 문자열 연산이나 정규식을 사용해 텍스트를 수정한 뒤 문서를 재구성합니다.

string editedContent = originalContent.Replace("document", "edited document");

단계 7: 콘텐츠 수정

문서의 콘텐츠를 필요에 따라 수정합니다. 여기서는 문서 내의 단어를 간단히 교체하고 있습니다.

string editedContent = originalContent.Replace("document", "edited document");

변경 후 EditableDocument를 재구성하는 방법은?

HTML 문자열을 편집한 후, 수정된 콘텐츠와 관련 리소스(이미지, 폰트 등)를 에디터에 다시 전달해 새로운 EditableDocument를 생성합니다. 이렇게 하면 내부 구조가 재구성되어 업데이트된 내용으로 저장할 준비가 됩니다.

using (EditableDocument afterEdit = EditableDocument.FromMarkup(editedContent, allResources))
{
    string originalContent3 = afterEdit.GetContent();

단계 8: 편집된 콘텐츠로 새 EditableDocument 생성

편집된 콘텐츠와 리소스를 사용해 새로운 EditableDocument 인스턴스를 생성합니다.

using (EditableDocument afterEdit = EditableDocument.FromMarkup(editedContent, allResources))
{
    string originalContent3 = afterEdit.GetContent();

암호화를 포함한 PDF 저장 옵션을 구성하는 방법은?

PdfSaveOptions는 비밀번호 보호 및 압축을 포함한 PDF 저장 옵션을 정의합니다. 인스턴스를 생성하고 Password를 설정해 출력 파일을 암호화하며, 필요에 따라 EnablePagination을 활성화해 페이지 레이아웃을 유지하고, 대용량 파일을 위해 CompressionLevel을 조정합니다. 이러한 설정은 편집된 PDF가 디스크에 기록되는 방식을 제어합니다.

FixedLayoutFormats docmFormat = FixedLayoutFormats.Pdf;
Options.PdfSaveOptions saveOptions = new PdfSaveOptions();
saveOptions.Password = "output_password";
saveOptions.OptimizeMemoryUsage = true;

단계 9: 문서 저장 옵션 생성

PDF 문서의 저장 옵션을 지정합니다. 출력 문서에 비밀번호를 설정할 수도 있습니다.

FixedLayoutFormats docmFormat = FixedLayoutFormats.Pdf;
Options.PdfSaveOptions saveOptions = new PdfSaveOptions();
saveOptions.Password = "output_password";
saveOptions.OptimizeMemoryUsage = true;

편집된 PDF를 디스크에 저장하는 방법은?

Save 메서드는 지정된 저장 옵션을 사용해 편집된 문서를 파일에 기록합니다. Editor 인스턴스에서 업데이트된 EditableDocument와 구성된 PdfSaveOptions를 제공해 호출하면, 최종 PDF가 대상 위치에 생성되며 지정한 암호화 및 페이지 매김 설정이 적용됩니다.

string outputFilename = Path.GetFileNameWithoutExtension(inputFilePath) + "." + docmFormat.Extension;
string outputPath = Path.Combine("OutputDirectoryPath", outputFilename);
using (FileStream outputStream = File.Create(outputPath))
{
    editor.Save(afterEdit, outputStream, saveOptions);
}

단계 10: 편집된 문서 저장

마지막으로 지정된 출력 경로에 편집된 문서를 저장합니다.

string outputFilename = Path.GetFileNameWithoutExtension(inputFilePath) + "." + docmFormat.Extension;
string outputPath = Path.Combine("OutputDirectoryPath", outputFilename);
using (FileStream outputStream = File.Create(outputPath))
{
    editor.Save(afterEdit, outputStream, saveOptions);
}

일반적인 문제 및 해결책

  • 대용량 PDF에서 메모리 급증LoadOptions.UseMemoryCache = false 로 스트리밍을 활성화합니다.
  • 텍스트가 교체되지 않음 – 정확히 일치하는 대소문자 구분 문자열이 존재하는지 확인하고, 퍼지 매치를 위해 정규식을 고려합니다.
  • 페이지 매김이 깨짐 – 편집 및 저장 옵션 모두에서 EnablePagination이 true인지 확인합니다.

자주 묻는 질문

Q: .NET용 GroupDocs.Editor를 사용해 다른 문서 형식도 편집할 수 있나요?
A: 예, 라이브러리는 PDF 외에도 Word, Excel, PowerPoint 및 30개 이상의 추가 형식을 지원합니다.

Q: GroupDocs.Editor for .NET의 무료 체험판을 어떻게 받을 수 있나요?
A: GroupDocs.Editor 무료 체험 페이지에서 무료 체험판을 다운로드할 수 있습니다.

Q: .NET용 GroupDocs.Editor로 대용량 PDF 문서를 처리할 수 있나요?
A: 예, API에는 스트리밍 및 메모리 최적화 기능이 포함되어 있어 500 MB를 초과하는 PDF도 작업할 수 있습니다.

Q: 저장할 때 PDF 문서를 어떻게 암호화하나요?
A: Save 호출 전에 PdfSaveOptionsPassword 속성을 설정하면 출력 PDF가 비밀번호로 보호됩니다.

Q: 문제가 발생했을 때 어디서 지원을 받을 수 있나요?
A: 도움이 필요하면 GroupDocs.Editor 지원 포럼에서 문의하십시오.

결론

이제 GroupDocs.Editor for .NET을 사용해 PDF를 프로그래밍 방식으로 편집하는 전체 워크플로우를 마스터했습니다. 비밀번호로 보호된 PDF 로드, 스트림으로 읽기, 페이지 매김 활성화, 암호화된 출력 저장 등 일반적인 시나리오를 모두 다룹니다. API를 더 탐색해 문서를 배치 처리하거나 이미지 조작, 클라우드 스토리지와 통합하는 기능도 활용해 보세요.


Last Updated: 2026-07-15
Tested With: GroupDocs.Editor 23.12 for .NET
Author: GroupDocs

관련 튜토리얼