IronPDF를 사용하여 C#에서 PDF 이미지를 평면화하는 방법

IronPDF C#로 PDF 평면화하는 방법

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF는 Flatten() 메서드를 사용하여 C#의 PDF 문서를 평면화하여 대화형 양식 필드를 정적 콘텐츠로 변환하여 더 이상 문서를 수정할 수 없도록 합니다.

PDF 문서에는 라디오 버튼, 체크박스, 텍스트 상자, 목록과 같은 입력 가능한 위젯이 포함된 대화형 양식이 자주 포함됩니다. 이 문서를 보안 또는 보관 목적으로 수정할 수 없게 하려면 PDF 파일을 평면화합니다. 이는 비즈니스 애플리케이션, 법률 문서 또는 영구 기록을 필요로 하는 모든 시나리오에서 PDF 양식을 사용할 때 적용됩니다.

빠른 시작: 몇 줄 안에 PDF 평면화

IronPDF를 사용하여 PDF 문서를 평면화하여 모든 상호작용성을 제거하고 영구적이고 수정할 수 없는 콘텐츠를 만듭니다. 이 C# 코드 스니펫은 기존 PDF를 로드하고 모든 입력 가능한 위젯을 제거하고 보안 문서를 저장합니다.

  1. NuGet 패키지 관리자를 사용하여 https://www.nuget.org/packages/IronPdf 설치하기

    PM > Install-Package IronPdf
  2. 다음 코드 조각을 복사하여 실행하세요.

    var pdf = IronPdf.PdfDocument.FromFile("input.pdf");
    pdf.Flatten();
    pdf.SaveAs("flattened.pdf");
  3. 실제 운영 환경에서 테스트할 수 있도록 배포하세요.

    무료 체험판으로 오늘 프로젝트에서 IronPDF 사용 시작하기

    arrow pointer

C#에서 PDF 문서를 평면화하는 방법은 무엇인가요?

IronPDF가 설치되면 단일 메서드 호출로 PDF 파일을 평면화할 수 있습니다. 이 프로세스는 기존 PDF 문서 및 평면화하기 전에 HTML 파일에서 렌더된 PDF에서 모두 작동합니다.

아래의 코드 예제는 기존 PDF를 로드하기 위해 PdfDocument 클래스를 사용합니다. 동적 PDF 생성을 위해 양식을 평면화하기 전에 ChromePdfRenderer 클래스를 사용하여 렌더링합니다.

PDF 파일을 평면화하려면 Flatten 메서드를 호출하십시오. 이렇게 하면 라디오 버튼, 체크박스 및 텍스트 필드를 포함하여 모든 상호작용 위젯을 제거하여 문서를 수정할 수 없도록 합니다.

입력

:path=/static-assets/pdf/content-code-examples/how-to/pdf-image-flatten-csharp-flatten-pdf.cs
using IronPdf;

// Select the desired PDF File
PdfDocument pdf = PdfDocument.FromFile("before.pdf");

// Flatten the pdf
pdf.Flatten();

// Save as a new file
pdf.SaveAs("after_flatten.pdf");
Imports IronPdf

' Select the desired PDF File
Private pdf As PdfDocument = PdfDocument.FromFile("before.pdf")

' Flatten the pdf
pdf.Flatten()

' Save as a new file
pdf.SaveAs("after_flatten.pdf")
$vbLabelText   $csharpLabel

산출

복잡한 시나리오의 경우 특정 페이지를 평면화하거나 양식 데이터를 평면화하기 전에 설정하세요. 이러한 페이지 인덱스를 평면화하려면 0부터 시작하는 페이지 인덱스 목록을 전달하세요:

:path=/static-assets/pdf/content-code-examples/how-to/pdf-image-flatten-csharp-3.cs
using IronPdf;

// Load a PDF with fillable forms
PdfDocument pdf = PdfDocument.FromFile("form-document.pdf");

// Optionally, pre-fill form fields by name before flattening
pdf.Form.FindFormField("name").Value = "John Doe";
pdf.Form.FindFormField("email").Value = "john@example.com";

// Flatten only pages 1-3, passing their zero-based indexes
pdf.Flatten(new[] { 0, 1, 2 });

// Save the result
pdf.SaveAs("flattened-form.pdf");
Imports IronPdf

' Load a PDF with fillable forms
Dim pdf As PdfDocument = PdfDocument.FromFile("form-document.pdf")

' Optionally, pre-fill form fields by name before flattening
pdf.Form.FindFormField("name").Value = "John Doe"
pdf.Form.FindFormField("email").Value = "john@example.com"

' Flatten only pages 1-3, passing their zero-based indexes
pdf.Flatten(New Integer() {0, 1, 2})

' Save the result
pdf.SaveAs("flattened-form.pdf")
$vbLabelText   $csharpLabel

PDF가 평면화되었는지 어떻게 확인할 수 있습니까?

아래 출력 결과는 변경 전과 후의 상태를 보여줍니다. 첫 번째 PDF 파일에는 편집 가능한 양식 필드가 포함되어 있습니다. 평면화 메서드가 실행되면 문서는 수정할 수 없게 됩니다. 이 코드는 Blazor 앱을 포함한 모든 .NET 프로젝트에서 작동합니다.

Flatten 메서드를 사용한 후에는 양식을 감지할 수 없습니다.

평면화가 성공적으로 완료되었는지 확인하려면 폼 필드 개수를 확인하세요.

:path=/static-assets/pdf/content-code-examples/how-to/pdf-image-flatten-csharp-4.cs
using IronPdf;

// Load the flattened PDF
PdfDocument flattenedPdf = PdfDocument.FromFile("flattened.pdf");

// FormFieldCollection exposes Count directly on the Form property
if (flattenedPdf.Form.Count == 0)
{
    Console.WriteLine("PDF has been successfully flattened - no interactive fields remain.");
}
else
{
    Console.WriteLine($"Warning: {flattenedPdf.Form.Count} form fields still exist.");
}
Imports IronPdf

' Load the flattened PDF
Dim flattenedPdf As PdfDocument = PdfDocument.FromFile("flattened.pdf")

' FormFieldCollection exposes Count directly on the Form property
If flattenedPdf.Form.Count = 0 Then
    Console.WriteLine("PDF has been successfully flattened - no interactive fields remain.")
Else
    Console.WriteLine($"Warning: {flattenedPdf.Form.Count} form fields still exist.")
End If
$vbLabelText   $csharpLabel
Icon Quote related to PDF가 평면화되었는지 어떻게 확인할 수 있습니까?

이 종류의 라이브러리 중 가장 좋아하는 것은 IronPDF입니다. PDF 파일을 빠르고 효율적으로 조작할 수 있습니다. 또한 PDF/A 형식으로 내보내기 및 PDF 문서의 디지털 서명과 같은 많은 유용한 기능을 가지고 있습니다.

Milan Jovanovic related to PDF가 평면화되었는지 어떻게 확인할 수 있습니까?

Milan Jovanovic

마이크로소프트 MVP

사례 연구 보기
Icon Quote related to PDF가 평면화되었는지 어떻게 확인할 수 있습니까?

IronOCR 덕분에 연간 $40,000를 수동 프로세싱에서 절약하고 생산성을 높이며 고부가가치 작업에 자원을 활용할 수 있습니다. 강력히 추천합니다.

Brent Matzelle related to PDF가 평면화되었는지 어떻게 확인할 수 있습니까?

브렌트 마첼

최고 기술 책임자, OPYN

사례 연구 보기
Icon Quote related to PDF가 평면화되었는지 어떻게 확인할 수 있습니까?

IronSuite는 우리의 운영에서 중요한 역할을 합니다. 이것들은 사업 전반에 걸쳐 효율성을 높이는 도구로, 평면도 생성 및 재고 관리 개선을 포함합니다.

David Jones related to PDF가 평면화되었는지 어떻게 확인할 수 있습니까?

데이비드 존스

리드 소프트웨어 엔지니어, Agorus Build

사례 연구 보기

평면화 후 폼 필드는 어떻게 됩니까?

PDF 문서를 평면화하면 모든 대화형 폼 요소가 페이지 콘텐츠의 일부가 됩니다. 폼 필드는 정적 텍스트와 그래픽으로 변환됩니다:

  • 텍스트 입력 필드는 페이지의 일반 텍스트로 표시됩니다. 체크박스와 라디오 버튼은 선택 상태를 보여주는 정적 이미지로 표시됩니다.
  • 드롭다운 메뉴에는 선택된 값만 일반 텍스트로 표시됩니다.
  • 디지털 서명은 시각적으로는 보존되지만 암호화 유효성은 손실됩니다.

이 과정은 되돌릴 수 없습니다. 향후 편집이 필요한 경우 원본 대화형 PDF 파일의 사본을 보관하십시오. 평면화는 페이지를 이미지로 래스터화하는 것과 달리 텍스트 및 벡터 콘텐츠를 선택 가능하게 유지합니다. 이는 각 페이지를 평면 이미지로 변환합니다. 보안과 편집 가능성이 모두 필요한 문서의 경우, PDF 병합 대신 PDF 권한 및 암호를 사용하십시오.

언제 PDF 문서를 평면화해야 하나요?

평면화의 일반적인 사례:

  1. 법률 문서 보관 : 계약서 및 합의서 서명 후 내용을 변경하지 않고 법적 효력을 유지하기 위해 문서를 평면화하십시오.

  2. 보고서 배포 : 변조를 방지하기 위해 계산 필드가 포함된 재무 보고서 및 데이터 시트를 배포 전에 평면화하십시오.

  3. 양식 제출 처리 : 사용자가 온라인 양식을 작성한 후 PDF를 병합하여 영구 기록을 생성합니다.

  4. 인쇄 최적화 : 평면화된 PDF는 프린터가 대화형 요소를 처리하지 않으므로 더욱 안정적으로 인쇄됩니다.

  5. 파일 크기 감소: 평면화는 PDF 압축과 잘 어울리며 폼 필드 데이터 구조를 제거하여 파일 크기를 줄일 수 있습니다.

다음은 작성된 여러 양식을 일괄 처리하여 보관하는 예시입니다.

using IronPdf;
using System.IO;

public class BatchPdfFlattener
{
    public static void FlattenAllPdfsInDirectory(string sourceDir, string outputDir)
    {
        // Ensure output directory exists
        Directory.CreateDirectory(outputDir);

        // Get all PDF files in source directory
        string[] pdfFiles = Directory.GetFiles(sourceDir, "*.pdf");

        foreach (string pdfFile in pdfFiles)
        {
            try
            {
                // Load the PDF
                PdfDocument pdf = PdfDocument.FromFile(pdfFile);

                // Flatten the document
                pdf.Flatten();

                // Save to output directory with "_flattened" suffix
                string fileName = Path.GetFileNameWithoutExtension(pdfFile);
                string outputPath = Path.Combine(outputDir, $"{fileName}_flattened.pdf");
                pdf.SaveAs(outputPath);

                Console.WriteLine($"Flattened: {fileName}");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error processing {pdfFile}: {ex.Message}");
            }
        }
    }
}
using IronPdf;
using System.IO;

public class BatchPdfFlattener
{
    public static void FlattenAllPdfsInDirectory(string sourceDir, string outputDir)
    {
        // Ensure output directory exists
        Directory.CreateDirectory(outputDir);

        // Get all PDF files in source directory
        string[] pdfFiles = Directory.GetFiles(sourceDir, "*.pdf");

        foreach (string pdfFile in pdfFiles)
        {
            try
            {
                // Load the PDF
                PdfDocument pdf = PdfDocument.FromFile(pdfFile);

                // Flatten the document
                pdf.Flatten();

                // Save to output directory with "_flattened" suffix
                string fileName = Path.GetFileNameWithoutExtension(pdfFile);
                string outputPath = Path.Combine(outputDir, $"{fileName}_flattened.pdf");
                pdf.SaveAs(outputPath);

                Console.WriteLine($"Flattened: {fileName}");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error processing {pdfFile}: {ex.Message}");
            }
        }
    }
}
Imports IronPdf
Imports System.IO

Public Class BatchPdfFlattener
    Public Shared Sub FlattenAllPdfsInDirectory(sourceDir As String, outputDir As String)
        ' Ensure output directory exists
        Directory.CreateDirectory(outputDir)

        ' Get all PDF files in source directory
        Dim pdfFiles As String() = Directory.GetFiles(sourceDir, "*.pdf")

        For Each pdfFile As String In pdfFiles
            Try
                ' Load the PDF
                Dim pdf As PdfDocument = PdfDocument.FromFile(pdfFile)

                ' Flatten the document
                pdf.Flatten()

                ' Save to output directory with "_flattened" suffix
                Dim fileName As String = Path.GetFileNameWithoutExtension(pdfFile)
                Dim outputPath As String = Path.Combine(outputDir, $"{fileName}_flattened.pdf")
                pdf.SaveAs(outputPath)

                Console.WriteLine($"Flattened: {fileName}")
            Catch ex As Exception
                Console.WriteLine($"Error processing {pdfFile}: {ex.Message}")
            End Try
        Next
    End Sub
End Class
$vbLabelText   $csharpLabel

결론

평면화는 PDF의 대화형 양식 필드를 단일 Flatten() 호출로 정적 페이지 콘텐츠로 변환하여 문서를 더 이상 편집할 수 없도록 잠급니다. 데이터를 나중에 변경해야 할 수 있으므로 평면화되지 않은 복사본을 유지하십시오. 이 작업은 취소할 수 없습니다.

먼저 필드를 채워야 하는 경우 평면화를 하기 전에 양식 값을 설정하십시오; 병합 또는 분할 후 잠긴 문서를 조립합니다.


라이브러리 바로가기

문서

추가 문서 보기

PDF를 병합하고, 편집 및 조작하는 방법 등에 대한 자세한 내용은 설명서를 참조하십시오.

IronPDF 문서를 참조하십시오.

당신이 할 수 있는 다른 일들을 알아볼 준비가 되셨나요? 추가 기능에 대한 자세한 내용 은 여기 튜토리얼 페이지를 참조하세요.

자주 묻는 질문

PDF를 평면화한다는 것은 무엇을 의미합니까?

PDF를 평면화하면 체크박스, 텍스트 상자, 라디오 버튼과 같은 모든 대화형 폼 필드가 편집 불가능한 정적인 콘텐츠로 변환됩니다. IronPDF는 문서의 무결성을 보장하고 추가 수정을 방지하기 위해 이러한 기능을 제공합니다.

C#에서 PDF를 평면화하는 방법은 무엇인가요?

IronPDF로 PDF를 세 번의 명령어로 평면화하십시오: var pdf = IronPdf.PdfDocument.FromFile("input.pdf"); 그런 다음 pdf.Flatten(); 그런 다음 pdf.SaveAs("flattened.pdf"). 이를 통해 PDF를 로드하고 모든 상호작용 요소를 제거하고 보안 문서를 저장합니다.

문서 전체가 아닌 특정 페이지만 병합할 수 있나요?

네, 0 기반 페이지 인덱스 리스트를 Flatten 메서드에 전달하십시오. 예를 들어, pdf.Flatten(new[] { 0, 1, 2 })는 페이지 0, 1 및 2만 평면화하고 남은 페이지는 상호작용 가능한 상태로 둡니다.

어떤 유형의 폼 필드를 평면화할 수 있나요?

IronPDF는 라디오 버튼, 체크박스, 텍스트 필드, 드롭다운 목록 및 기타 입력 가능한 양식 요소를 포함한 모든 대화형 위젯을 평면화하여 영구적인 정적 콘텐츠로 변환할 수 있습니다.

PDF로 변환하기 전에 양식 필드를 채울 수 있나요?

네, IronPDF는 평면화 전에 양식 필드를 미리 채울 수 있게 합니다. pdf.Form.FindFormField("name").Value = "John Doe"와 같은 값을 설정한 후 Flatten 메서드를 호출하여 완료되었지만 비편집 가능한 문서를 만듭니다.

PDF 병합 과정에서 어떤 렌더링 엔진을 사용하나요?

IronPDF는 Chrome 렌더링 엔진을 사용하여 복잡한 양식을 병합하기 전에 정확하게 렌더링함으로써 전체 과정에서 문서의 시각적 무결성을 유지합니다.

PDF 문서를 평면화해야 하는 이유는 무엇인가요?

IronPDF를 사용하여 PDF를 평면화하는 것은 보안, 보관 목적, 법률 문서 또는 양식 데이터에 대한 추가 수정을 방지해야 하는 영구적인 문서 보존이 필요한 모든 시나리오에 필수적입니다.

Curtis Chau
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

시작할 준비 되셨나요?
Nuget 다운로드 19,936,792 | 버전: 2026.7 방금 출시
Still Scrolling Icon

아직도 스크롤하고 계신가요?

빠른 증거를 원하시나요? PM > Install-Package IronPdf
샘플을 실행하세요 HTML이 PDF로 변환되는 것을 지켜보세요.