C#에서 PDF를 압축하는 방법

IronPDF 사용하여 C#에서 PDF를 압축하는 방법

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

IronPDF C#으로 구현된 강력한 PDF 압축 기능을 제공하여 내장된 이미지를 압축하고 PDF 트리 구조를 최적화함으로써 파일 크기를 줄여 문서 품질을 유지하면서 저장 및 공유를 더욱 용이하게 해줍니다.

PDF 압축은 PDF 문서의 파일 크기를 줄여 저장, 공유 및 전송을 더욱 용이하게 합니다. HTML에서 생성된 PDF를 사용하든 기존 PDF 파일을 사용하든, 문서 처리를 최적화하려면 압축이 필수적입니다.

일반적으로 PDF 파일 크기의 대부분은 이미지로 구성됩니다. IronPDF 내장 이미지 크기를 줄이고 표가 많은 PDF에서 흔히 볼 수 있는 트리 구조를 최적화하는 압축 기능을 제공합니다. 이러한 기술은 URL을 PDF로 변환 하거나 HTML 파일을 변환하는 등 다양한 방법을 통해 생성된 PDF와 완벽하게 호환됩니다.

빠른 시작: IronPDF로 PDF 압축하여 파일 크기 줄이기

IronPDF의 압축 도구를 사용하여 PDF 파일 크기를 줄이세요. PDF 파일을 PdfDocument.FromFile로 불러온 다음 CompressAndSaveAs를 호출하여 최적화된 PDF 파일을 한 번에 압축 및 저장하세요. 이 과정을 통해 파일 크기를 크게 줄이면서도 품질을 유지할 수 있습니다.

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

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

    PdfDocument.FromFile("input.pdf").CompressAndSaveAs("compressed.pdf", 40);
  3. 실제 운영 환경에서 테스트할 수 있도록 배포하세요.

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

    arrow pointer


CompressImages, CompressStructTree, Compress(CompressionOptions)와 같은 이전 압축 방식은 더 이상 사용되지 않습니다.

PDF 파일에서 이미지를 압축하는 방법은 무엇인가요?

JPEG 압축 품질은 0(최대 압축)에서 100(최소 손실)까지의 값을 허용하며, 해당 값이 적용되는 방식은 기본 엔진에 따라 결정됩니다. 이러한 레벨을 이해하면 이미지가 포함된 PDF 파일을 다루거나 글꼴 및 그래픽을 관리 해야 할 때 도움이 됩니다.

  • 90% 이상: 고품질
  • 80~90%: 중간 품질
  • 70~80%: 낮은 품질

다양한 값을 조정하여 화질과 파일 크기의 균형을 맞춰보세요. 화질 저하는 입력 이미지 유형에 따라 다르며, 이미지 종류에 따라 선명도 손실이 더 두드러지게 나타납니다. 이는 특히 Azure Blob Storage의 이미지를 사용하거나 사용자 지정 워터마크가 포함된 PDF를 만들 때 중요합니다.

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

ChromePdfRenderer renderer = new ChromePdfRenderer();

PdfDocument pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page");

// Compress images in the PDF
pdf.CompressAndSaveAs("compressed.pdf", 40);
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page")

' Compress images in the PDF
pdf.CompressAndSaveAs("compressed.pdf", 40)
$vbLabelText   $csharpLabel

이미지 압축을 통해 어떤 결과를 기대할 수 있을까요?

39.24% 할인!

압축된 PDF 파일(449KB)과 압축되지 않은 PDF 파일(739KB)을 비교하여 이미지 압축 결과를 보여줍니다.

품질 매개변수는 어떻게 작동합니까?

CompressAndSaveAsquality 매개변수는 내장된 모든 이미지에 적용되는 JPEG 인코딩 품질을 제어합니다. 0(최대 압축, 최저 품질)부터 100(최소 압축, 최고 품질)까지의 정수를 전달하거나, null를 전달하면 이미지 압축을 완전히 건너뛸 수 있습니다.

IronPDF는 압축 중에 자동으로 이미지를 다시 인코딩하고 크기를 조정하므로 추가 옵션이 필요하지 않습니다. 값이 낮을수록 파일 크기가 작아지지만 눈에 보이는 아티팩트가 나타날 수 있습니다. 콘텐츠에 적합한 균형을 찾기 위해 실험해 보세요.


PDF 트리 구조를 압축하는 방법은 무엇인가요?

이 기능은 Chrome 엔진에서 생성한 트리 구조를 제거하여 PDF 크기를 줄입니다. 이 기능을 활성화하려면 CompressAndSaveAs의 세 번째 매개변수로 removeStructureTree: true를 전달하십시오. Chrome 엔진으로 생성된 광범위한 테이블 데이터를 포함한 PDF에 가장 효과적입니다. 일부 렌더링 엔진은 이러한 구조 없이 PDF를 출력하므로, 그런 경우에는 이 기능이 효과가 없습니다. 이 기술은 복잡한 레이아웃을 다루거나 구조적 요소가 중복되는 여러 PDF 파일을 병합 할 때 유용합니다.

트리 구조를 제거하면 텍스트 강조 표시 및 추출 효율성에 영향을 미칠 수 있습니다. 압축을 적용할 때, 특히 사용자가 압축된 PDF에서 텍스트와 이미지를 추출 해야 하는 경우 이러한 장단점을 고려해야 합니다.

Test CompressAndSaveAs with tree structure removal using this PDF with table data.

:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-tree-structure.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("table.pdf");

// Compress tree structure in PDF
pdf.CompressAndSaveAs("compressedTable.pdf", null, true);
Imports IronPdf

Dim pdf As PdfDocument = PdfDocument.FromFile("table.pdf")

' Compress tree structure in PDF
pdf.CompressAndSaveAs("compressedTable.pdf", Nothing, True)
$vbLabelText   $csharpLabel

트리 구조 압축을 통해 파일 크기를 얼마나 줄일 수 있을까요?

67.90% 할인! 이 비율은 표가 포함된 PDF 파일의 크기가 커질수록 증가합니다.

압축된 Table.pdf(52KB)와 table.pdf(162KB) 파일을 비교하여 압축 결과를 보여줍니다.

두 가지 압축 방법을 동시에 적용하려면 어떻게 해야 할까요?

CompressAndSaveAs는 단일 호출로 이미지 및 트리 구조 압축을 모두 처리합니다. quality 값을 전달하고 removeStructureTreetrue로 설정합니다. 이러한 결합 방식은 차트가 포함된 보고서나 표와 그래픽이 내장된 문서와 같이 이미지와 구조화된 데이터가 포함된 복잡한 PDF 파일에 특히 효과적입니다.

:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-compress.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Configure compression with automatic optimization
pdf.CompressAndSaveAs("compressed.pdf", 80, true);
Imports IronPdf

Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Configure compression with automatic optimization
pdf.CompressAndSaveAs("compressed.pdf", 80, True)
$vbLabelText   $csharpLabel

CompressAndSaveAs는 어떤 매개변수를 수용합니까?

  • outputPath (문자열): 압축된 PDF 파일이 저장될 파일 경로입니다.

  • quality (int?, 0–100): 모든 내장 이미지에 JPEG 품질이 적용됩니다. 낮은 값은 더 작은 파일을 만듭니다. 이미지 압축을 완전히 건너뛰려면 null를 전달하세요.

  • removeStructureTree (bool, 기본값 false): true일 때 PDF 구조 트리를 제거하여 파일 크기를 더욱 줄입니다. 테이블이 포함된 HTML로 생성된 PDF에 가장 효과적입니다.

압축을 적용할 때는 사용 사례를 고려하십시오. 보관 목적상 파일 크기보다 품질이 우선시될 수 있습니다. 웹 배포의 경우 더 작은 파일이 필요할 수 있습니다. PDF/A 규격 문서를 사용하는지 또는 표준 PDF 문서를 사용하는지에 따라 설정을 세부적으로 조정하십시오.

PDF 파일을 디스크에 저장하지 않고 압축하는 방법은 무엇인가요?

API 응답, 클라우드 함수 또는 이메일 첨부 파일과 같은 많은 실제 시나리오에서 압축된 PDF를 디스크에 저장하는 것은 불필요하거나 비현실적입니다.

CompressPdfToBytes는 압축된 PDF를 바이트 배열로 반환하므로 출력 저장 또는 전송 방식을 완벽하게 제어할 수 있습니다. CompressPdfToBytesCompressPdfToStream 모두 압축 방식을 제어하는 ​​선택적 CompressionMode 매개변수를 허용합니다.

:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-to-bytes.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Compress and return as byte array
byte[] compressedBytes = pdf.CompressPdfToBytes();

File.WriteAllBytes("compressed.pdf", compressedBytes);
Imports IronPdf

Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Compress and return as byte array
Dim compressedBytes As Byte() = pdf.CompressPdfToBytes()

File.WriteAllBytes("compressed.pdf", compressedBytes)
$vbLabelText   $csharpLabel

사용 가능한 압축 모드 옵션에는 어떤 것들이 있습니까?

배포 환경에 따라 디스크 액세스 및 성능에 대한 제약 조건이 다릅니다. CompressionMode 열거형을 사용하면 적절한 절충안을 선택할 수 있습니다.

  • Automatic (기본값): 시스템 성능에 따라 최적의 압축 방식을 선택합니다. 디스크 접근이 제한된 경우 HighQuality를 먼저 시도하고 FastMemory로 되돌아갑니다.

  • FastMemory: 디스크 I/O 없이 메모리에서만 압축을 수행합니다. 가장 빠른 옵션이지만 이미지 리샘플링이나 다운샘플링을 적용하지 않으므로 출력 파일 크기가 커집니다.

  • HighQuality: 임시 디스크 접근을 사용하여 최대 압축을 적용합니다. 이미지 최적화를 완벽하게 수행하여 가장 작은 출력 파일을 생성합니다. 시스템 임시 디렉터리에 대한 쓰기 권한이 필요합니다.

바이트 배열 대신 Stream가 필요한 경우 CompressPdfToStream를 사용하십시오. 이는 HTTP 응답, 클라우드 스토리지 업로드 또는 스트림 기반 워크플로로 직접 연결할 때 유용합니다.

:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-to-stream.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Compress and return as Stream
using var compressedStream = pdf.CompressPdfToStream();

File.WriteAllBytes("compressed.pdf", compressedStream.ToArray());
Imports IronPdf

Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Compress and return as Stream
Using compressedStream = pdf.CompressPdfToStream()
    File.WriteAllBytes("compressed.pdf", compressedStream.ToArray())
End Using
$vbLabelText   $csharpLabel

CompressPdfToBytesCompressPdfToStream는 이제 Java, Node.js 및 Python을 포함한 모든 IronPDF 플랫폼에서 사용할 수 있습니다.

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

자주 묻는 질문

PDF 파일 크기를 압축을 통해 얼마나 줄일 수 있을까요?

IronPDF는 이미지 압축 및 구조 최적화를 통해 PDF 파일 크기를 최대 75%까지 줄일 수 있습니다. 예시에서 보여드린 것처럼 이미지 압축 기술을 사용하여 파일 크기가 39.24% 감소했습니다.

IronPDF는 C#에서 PDF를 어떻게 압축하나요?

IronPDF는 CompressAndSaveAs라는 단일 메서드를 통해 압축을 처리합니다. 이 메서드는 구성 가능한 JPEG 품질(0–100)을 사용하여 삽입된 이미지 크기를 줄여주며, removeStructureTree: true를 설정하여 선택적으로 PDF의 내부 구조 트리를 제거할 수 있습니다. 이는 표가 많은 문서에서 특히 효과적입니다.

PDF 파일에서 JPEG 압축 시 어떤 품질 수준을 사용해야 할까요?

IronPDF는 JPEG 압축률을 1%에서 100%까지 지원합니다. 권장 압축률은 고화질의 경우 90% 이상, 중간 화질의 경우 80~90%, 저화질의 경우 70~80%입니다. 최적의 설정은 파일 크기와 시각적 품질 요구 사항 간의 균형을 고려하여 결정하십시오.

PDF 파일을 단 한 줄의 코드로 압축할 수 있을까요?

네, IronPDF를 사용하면 한 줄의 코드로 PDF 압축이 가능합니다: PdfDocument.FromFile("input.pdf").CompressAndSaveAs("compressed.pdf", 40); 이 코드는 PDF를 불러온 후, 이미지 품질을 40%로 설정하여 압축하고 결과를 저장합니다.

HTML로 생성된 PDF에도 압축 기능이 적용되나요?

네, IronPDF의 압축 기능은 HTML 문자열을 PDF로 변환하는 경우, URL을 PDF로 변환하는 경우, HTML 파일을 변환하는 경우 등 다양한 방법으로 생성된 PDF는 물론 기존 PDF 파일과도 원활하게 작동합니다.

PDF 압축을 통해 가장 큰 이점을 얻을 수 있는 콘텐츠 유형은 무엇입니까?

일반적으로 이미지는 PDF 파일 크기의 대부분을 차지하므로 이미지가 많은 문서는 압축에 적합합니다. 또한 복잡한 표 구조를 가진 PDF는 IronPDF의 구조 트리 압축 기능을 통해 이점을 얻을 수 있습니다.

디스크에 저장하지 않고 PDF를 압축할 수 있나요?

네, IronPDF는 압축된 PDF를 각각 바이트 배열 또는 스트림으로 반환하는 CompressPdfToBytesCompressPdfToStream 메서드를 제공합니다. 두 메서드 모두 Automatic, FastMemory 또는 HighQuality 압축 옵션을 지정할 수 있는 선택적 CompressionMode 매개변수를 지원합니다.

C# 이외의 다른 언어에서도 PDF 압축 기능을 사용할 수 있습니까?

네, CompressPdfToBytesCompressPdfToStream은 이제 Java, Node.js, Python을 포함한 모든 IronPDF 플랫폼에서 사용할 수 있습니다.

커티스 차우
기술 문서 작성자

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

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

검토자:
제프 프리츠
제프리 T. 프리츠
.NET 커뮤니티 팀의 수석 프로그램 관리자
제프는 .NET 및 Visual Studio 팀의 수석 프로그램 관리자이기도 합니다. 그는 .NET Conf 가상 컨퍼런스 시리즈의 총괄 프로듀서이며, 개발자를 위한 라이브 스트림 'Fritz and Friends'를 주 2회 진행하며 시청자들과 함께 기술에 대해 이야기하고 코드를 작성합니다. 제프는 Microsoft Build, Microsoft Ignite, .NET Conf, Microsoft MVP Summit 등 주요 Microsoft 개발자 행사를 위한 워크숍, 프레젠테이션 및 콘텐츠 기획을 담당합니다.
시작할 준비 되셨나요?
Nuget 다운로드 18,318,263 | 버전: 2026.4 방금 출시되었습니다
Still Scrolling Icon

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

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