소개

PDF는 계약서, 사양서, 보고서 및 규제 제출물의 사실상 표준이며, 여러 버전이 유통되는 상황에서 두 파일 사이에 정확히 무엇이 변경되었는지 추적하는 일은 금세 번거로워집니다. 문서를 나란히 스크롤하면서 차이를 손으로 주석 달기는 규모에 맞지 않으며, Adobe Acrobat의 Compare 기능과 같은 전용 도구조차도 파일 쌍마다 수동 개입이 필요합니다.

GroupDocs.Comparison for .NET을 사용하면 PDF 비교를 완전히 코드로 실행하고 결과 표시 방식을 정확히 선택할 수 있습니다. 버전 26.4에서는 세 가지 출력 표시 모드를 제공하는 전용 PdfCompareOptions 클래스를 도입했습니다.

  1. Inline (기본값) — 삭제와 삽입이 서로 다른 색으로 강조된 단일 병합 PDF. 이는 전통적인 동작이며 독립 파일로 공유하기 가장 쉬운 결과입니다.
  2. Side‑by‑Side — 각 결과 페이지에 원본 페이지와 대상 페이지가 나란히 배치되어 내용이 겹치지 않습니다. 문서가 크게 달라서 한 페이지에 내용을 섞으면 혼란스러울 때 이상적입니다.
  3. Interleaved — 결과에 페이지가 교차해서 포함됩니다: 홀수 페이지는 원본(삭제 강조), 짝수 페이지는 대상(삽입 강조)입니다. 변경 사항은 PDF 주석이라는 기본 객체 형태로 표현되며, 여기에는 변경 유형 및 작성자 이름과 같은 메타데이터가 포함됩니다. 대부분의 PDF 뷰어(Adobe Acrobat Reader, Foxit 등)에서 주석 패널을 열어 개별 주석을 수락하거나 삭제할 수 있어 별도 소프트웨어 없이 가벼운 검토 워크플로를 구현할 수 있습니다. 이 파일을 “두 페이지 보기” PDF 리더에서 열면 자연스러운 좌/우 비교가 됩니다.

이 문서에서는 세 가지 모드를 모두 실제 C# 예제와 함께 살펴보고, PdfCompareOptions와 그 속성을 탐색하며, 동일 작업을 Adobe Acrobat에서 수동으로 수행하는 방법도 간략히 다룹니다.


Adobe Acrobat에서 PDF 비교하기

프로그래밍 접근 방식에 들어가기 전에 Adobe Acrobat Pro가 기본 제공하는 기능을 알아두면 좋습니다. Acrobat에 내장된 Compare Files 도구(Tools → Compare Files 아래에 있음)는 텍스트 변경, 이미지 차이 및 서식 변화를 강조하는 나란히 보고서를 생성합니다.

Acrobat Pro에서 비교를 실행하려면:

  1. Acrobat Pro를 열고 Tools → Compare Files를 선택합니다.
  2. Older File(원본)과 Newer File(대상)을 선택합니다.
  3. Compare를 클릭합니다. Acrobat은 요약 페이지와 인라인 변경 표시가 포함된 인터랙티브 비교 보고서를 생성합니다.

가끔씩 수동 검토를 할 때는 잘 작동합니다. 하지만 비교가 자동 파이프라인의 일부가 되어야 할 경우 Acrobat의 비교 도구는 상당한 제한이 있습니다.

비교를 서버, CI/CD 파이프라인 또는 맞춤형 검토 워크플로의 일부로 수행해야 할 때는 코드 우선 라이브러리가 올바른 선택입니다.


사전 요구 사항

시작하기 전에:

  • .NET 6.0 이상.
  • GroupDocs.Comparison for .NET 26.4 이상 — NuGet을 통해 설치:
dotnet add package GroupDocs.Comparison
  • 라이선스 파일(GroupDocs.Comparison.lic). 라이선스가 없으면 라이브러리는 워터마크와 페이지 수 제한이 있는 평가 모드로 실행됩니다. 테스트용 임시 라이선스를 요청할 수 있습니다.
  • 비교할 PDF 두 개 — 여기서는 source.pdftarget.pdf라고 부르겠습니다. 예시 내용:
source.pdf target.pdf

모드 1: Inline 비교 (기본)

사용 시점: 별도의 뷰어나 두 페이지 레이아웃이 필요 없이, 누구나 열어 바로 변경 사항을 확인할 수 있는 단일 PDF 파일이 필요할 때. 일반적인 상황은 상대방과 빨간줄이 그어진 계약 초안을 공유하는 경우입니다.

using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;

using (var comparer = new Comparer("source.pdf"))
{
    comparer.Add("target.pdf");

    var options = new PdfCompareOptions
    {
        DisplayMode = PdfCompareOptions.ComparisonDisplayMode.Inline
    };

    comparer.Compare("result_inline.pdf", options);
}

참고: InlineDisplayMode의 기본값이므로 위 options 블록은 선택 사항입니다. comparer.Compare("result_inline.pdf") 호출만으로도 동일한 결과가 생성됩니다.

Inline 모드 결과 문서:

PDF comparison result in Inline mode

내부 동작 방식:

  • 원본 문서에서 삭제된 내용은 기본적으로 빨간색으로 강조됩니다.
  • 대상 문서에서 삽입된 내용은 기본적으로 초록색으로 강조됩니다.
  • 두 세트의 변경 사항이 동일 페이지에 함께 존재하므로 결과가 컴팩트하지만 문서가 크게 달라질 경우 복잡해 보일 수 있습니다. 텍스트 편집이 많이 일어나면 삭제된 내용과 삽입된 내용이 페이지 상에서 물리적으로 겹쳐 읽기 어려운 혼합이 발생할 수 있습니다. 이런 경우 SideBySide 또는 Interleaved 모드가 더 적합합니다.

모드 2: Side‑by‑Side 비교

사용 시점: 두 문서가 크게 달라서 삭제와 삽입을 같은 페이지에 배치하면 읽기 어려워질 때. Side‑by‑Side는 원본과 대상 내용을 엄격히 분리해 한눈에 스캔하기 쉽게 합니다.

using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;

using (var comparer = new Comparer("source.pdf"))
{
    comparer.Add("target.pdf");

    var options = new PdfCompareOptions
    {
        DisplayMode = PdfCompareOptions.ComparisonDisplayMode.SideBySide
    };

    comparer.Compare("result_side_by_side.pdf", options);
}

Side‑by‑Side 모드 결과 문서:

PDF comparison result in Side-by-Side mode

내부 동작 방식:

  • 각 결과 페이지는 사실상 두 개의 절반으로 나뉜 넓은 캔버스입니다.
  • 왼쪽 절반은 삭제가 강조된 원본 페이지를 보여줍니다.
  • 오른쪽 절반은 삽입이 강조된 대상 페이지를 보여줍니다.
  • 두 문서의 내용이 겹치지 않으므로, 편집이 많이 일어난 페이지라도 가독성이 유지됩니다.

모드 3: Interleaved 비교

사용 시점: 표준 PDF 리더의 Two Page View(또는 “Facing Pages”) 모드를 사용해 페이지별로 변경 사항을 검토하고 싶을 때. 각 원본 페이지가 왼쪽에, 해당 대상 페이지가 오른쪽에 배치되며, 물리적 페이지 레이아웃은 Side‑by‑Side가 단일 캔버스에 그린 것과 동일하지만 각 페이지가 전체 크기로 유지됩니다.

using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;

using (var comparer = new Comparer("source.pdf"))
{
    comparer.Add("target.pdf");

    var options = new PdfCompareOptions
    {
        DisplayMode = PdfCompareOptions.ComparisonDisplayMode.Interleaved,
        AnnotationAuthorName = "GroupDocs"
    };

    comparer.Compare("result_interleaved.pdf", options);
}

Interleaved 모드 결과 문서 (Two Page View에서 표시):

PDF comparison result in Interleaved mode viewed in Two Page View

내부 동작 방식:

  • 결과 문서는 N 페이지 원본/대상 쌍에 대해 2 × N 페이지를 포함합니다.
  • 홀수 페이지(1, 3, 5 …)는 삭제가 강조된 원본 페이지이며,
  • 짝수 페이지(2, 4, 6 …)는 삽입이 강조된 대상 페이지입니다.
  • AnnotationAuthorName은 비교 중 생성된 PDF 주석에 작성자 이름을 찍어 줍니다. 이는 여러 작성자의 의견을 구분해야 하는 검토 워크플로에 유용합니다.

팁: 결과 파일을 Adobe Acrobat Reader 또는 View → Page Display → Two Page View를 지원하는 다른 뷰어에서 열면 자동으로 좌/우 레이아웃이 적용됩니다.


페이지 범위로 비교 제한하기

세 가지 모드 모두 PagesSetup 속성을 통해 페이지 범위 필터링을 지원합니다. 이는 대형 문서의 특정 챕터나 섹션만 변경되었을 때 나머지를 건너뛰고 싶을 때 유용합니다.

using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;

using (var comparer = new Comparer("source.pdf"))
{
    comparer.Add("target.pdf");

    var options = new PdfCompareOptions
    {
        DisplayMode = PdfCompareOptions.ComparisonDisplayMode.SideBySide,
        PagesSetup = new PagesSetup
        {
            StartPage = 3,
            EndPage = 10
        }
    };

    comparer.Compare("result_pages_3_to_10.pdf", options);
}

PagesSetupnull이거나 설정되지 않은 경우 모든 페이지가 비교됩니다 — 이전 버전과 동일한 동작입니다.


PdfCompareOptions 살펴보기

PdfCompareOptionsCompareOptions의 PDF 전용 서브클래스로, 버전 26.2에서 도입된 WordCompareOptions와 동일한 패턴을 따릅니다. PDF 전용 설정을 한 곳에 모아 PDF 작업에 Word나 스프레드시트 전용 옵션이 실수로 적용되는 것을 방지합니다.

Property Type Description
DisplayMode ComparisonDisplayMode 결과 레이아웃을 제어합니다: Inline(기본), SideBySide, Interleaved.
PagesSetup PagesSetup 비교할 페이지 범위. null이면 모든 페이지가 처리됩니다.
CompareImagesPdf bool PDF에 포함된 이미지까지 비교할지 여부.
AnnotationAuthorName string PDF 주석에 찍히는 작성자 이름 (Interleaved 모드에서 사용).
ImagesInheritanceMode enum 이미지 비교가 비활성화된 경우 어느 문서가 이미지를 제공할지 제어합니다.

완전한 설정 예시:

var options = new PdfCompareOptions
{
    DisplayMode = PdfCompareOptions.ComparisonDisplayMode.Interleaved,
    CompareImagesPdf = true,
    AnnotationAuthorName = "Review Bot",
    PagesSetup = new PagesSetup { StartPage = 1, EndPage = 5 }
};

상속된 CompareOptions 기본 속성 — InsertedItemStyle, DeletedItemStyle, ChangedItemStyle — 도 사용 가능하며, 필요에 따라 기본 강조 색상을 재정의할 수 있습니다.


변경 사항을 프로그래밍 방식으로 가져오기

표시 모드와 관계없이 Comparer.GetChanges()를 통해 감지된 모든 차이의 구조화된 목록을 얻을 수 있습니다. 이는 맞춤 보고서를 만들거나, 결과를 검토 시스템에 전달하거나, 편집 범위에 대한 통계를 수집할 때 유용합니다.

using (var comparer = new Comparer("source.pdf"))
{
    comparer.Add("target.pdf");

    comparer.Compare("result.pdf");

    var changes = comparer.GetChanges(); // returns ChangeInfo[]
    Console.WriteLine($"Total changes detected: {changes.Length}");
}

자세한 내용은 공식 API 레퍼런스를 참고하세요: Comparer.GetChanges.


암호로 보호된 PDF 작업하기

암호로 보호된 PDF도 완전히 지원됩니다. Comparer를 생성할 때 LoadOptions에 비밀번호를 전달합니다:

using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;

using (var comparer = new Comparer("source_protected.pdf",
    new LoadOptions { Password = "secret" }))
{
    comparer.Add("target_protected.pdf", new LoadOptions { Password = "secret" });

    var options = new PdfCompareOptions
    {
        DisplayMode = PdfCompareOptions.ComparisonDisplayMode.SideBySide
    };

    comparer.Compare("result_protected.pdf", options);
}

무료 체험 받기

공식 릴리스 페이지에서 GroupDocs.Comparison for .NET을 다운로드할 수 있습니다. 제한 없는 테스트를 위해서는 임시 라이선스를 요청하세요 — 신용카드가 필요 없습니다.


자주 묻는 질문

Q: 서버에 Adobe Acrobat이나 다른 PDF 소프트웨어를 설치해야 하나요?
A: 필요 없습니다. GroupDocs.Comparison은 서드파티 의존성이 없는 독립 .NET 라이브러리로, PDF 파일을 읽고 쓸 수 있습니다.

Q: 기본적으로 어떤 표시 모드를 사용해야 하나요?
A: 먼저 Inline을 사용하세요 — 가장 컴팩트하고 공유하기 쉬운 결과를 제공합니다. 편집이 많이 일어나 인라인 뷰가 읽기 어려울 경우 SideBySide로 전환하거나, 검토자가 “Two Page View” PDF 리더를 사용할 경우 Interleaved를 선택하세요.

Q: PDF 외에 다른 형식도 비교할 수 있나요?
A: 네. 라이브러리는 Word 문서, Excel 스프레드시트, PowerPoint 프레젠테이션, 일반 텍스트 파일 등 다양한 형식을 지원합니다. 전체 목록은 문서에 있습니다.

Q: 라이선스를 설정하지 않으면 어떻게 되나요?
A: 라이브러리는 평가 모드로 실행됩니다. 출력 문서에 워터마크가 삽입되고 처음 몇 페이지만 처리됩니다. 임시 라이선스를 사용하면 테스트용 제한이 해제됩니다.

Q: 텍스트 변경은 무시하고 PDF 내부 이미지만 비교할 수 있나요?
A: PdfCompareOptionsCompareImagesPdf = true를 사용하면 이미지 비교가 포함됩니다. 이미지만 집중하고 싶다면 ImagesInheritanceMode 속성과 함께 사용하세요; 자세한 내용은 API 레퍼런스를 확인하세요.


결론

GroupDocs.Comparison for .NET 26.4는 PDF 비교 결과를 어떻게 표시할지에 대한 정밀하고 코드 기반의 제어를 제공합니다. Inline 모드는 가장 일반적인 사용 사례인 단일 공유 가능한 빨간줄 PDF에 적합합니다. SideBySide는 크게 변경된 내용을 깔끔하고 읽기 쉽게 유지합니다. Interleaved는 모든 PDF 뷰어의 Two Page View와 자연스럽게 연결되어 페이지별 전체 크기 검토를 가능하게 합니다. 또한 페이지 범위 필터링을 통해 중요한 섹션만 타깃팅할 수 있으며, PdfCompareOptions는 모든 PDF 전용 설정을 한 곳에 모아 탐색하기 쉽게 합니다.

워크플로에 맞는 모드를 선택하거나, 세 가지 모두 생성해 각 청중이 선호하는 뷰를 선택하도록 하세요.

추가 자료