IronPDF 사용하여 C#에서 PDF를 압축하는 방법
IronPDF는 C#에서 내장 이미지를 JPEG로 다시 인코딩하고 선택적으로 PDF 구조 트리를 삭제하여 한 번의 호출로 파일 크기를 줄이는 CompressAndSaveAs 메서드를 통해 PDF를 압축합니다. 동반자 CompressPdfToBytes 및 CompressPdfToStream 메서드도 메모리 내에서 동일한 작업을 수행하여 디스크를 건드리지 않습니다.
이미지는 보통 PDF 크기의 대부분을 차지하고 있으며 테이블이 많은 문서는 추가 무게를 더하는 구조 트리를 가지고 있습니다. IronPDF는 둘 다를 겨냥하여 디스크에서 로드된 PDF나 메모리 스트림에 있는 PDF를 모두 처리합니다.
빠른 시작: IronPDF 로 PDF 파일 압축하기
PDF를 PdfDocument.FromFile으로 로드하고 CompressAndSaveAs을 호출하여 이미지를 다시 인코딩하고 축소된 사본을 한 단계로 작성하십시오. 두 번째 인수는 JPEG 품질입니다.
최소 워크플로우 (3단계)
- NuGet 에서 PDF 압축용 C# 라이브러리를 다운로드하세요.
- 기존 PDF 파일을 가져오거나 새 PDF 파일을 생성합니다.
CompressAndSaveAs(outputPath, quality, removeStructureTree)를 호출하여 이미지를 압축하고 선택적으로 구조 트리를 제거하며 결과를 저장하십시오.
CompressImages, CompressStructTree 및 Compress(CompressionOptions)와 같은 이전의 압축 방법은 더 이상 사용되지 않습니다.
PDF 파일에서 이미지를 압축하는 방법은 무엇인가요?
CompressAndSaveAs의 두 번째 인수로 JPEG quality 값을 전달하면 IronPDF가 해당 품질로 모든 내장 이미지를 다시 인코딩합니다. 값은 0(최대 압축)에서 100(최소 손실)까지 있으며, 내부 엔진이 각 값을 출력에 어떻게 매핑할지 결정합니다. 문서가 임베디드 이미지를 포함할 때마다 이 방법을 사용하세요.
대략적인 가이드:
- 90 이상: 높은 품질
- 80에서 90: 중간 품질
- 70에서 80: 낮은 품질
더 낮은 숫자는 더 강하게 압축하지만 눈에 보이는 아티팩트를 일으킬 수 있으며 얼마나 많은 선명도가 떨어질지는 소스 이미지에 달려 있으므로 몇 가지 설정을 자신의 콘텐츠와 비교하여 원하는 균형을 찾아보세요.
입력
: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)
산출
이미지 압축을 통해 어떤 결과를 기대할 수 있을까요?
39.24%로 Wikipedia 렌더에서 감소됨.
PDF 트리 구조를 압축하는 방법은 무엇인가요?
세 번째 인수로 removeStructureTree: true을 CompressAndSaveAs에 전달하여 Chrome 엔진이 PDF로 작성하는 트리 구조를 삭제하십시오. 저장은 광범위한 테이블 데이터를 가진 Chrome 엔진 PDF에서 가장 큽니다. 어떤 렌더링 엔진은 제거할 수 있는 구조를 생성하지 않습니다.
트리를 제거하면 텍스트 강조 표시와 선택이 약해질 수 있으므로 나중에 독자가 결과에서 텍스트와 이미지를 추출할 필요가 있는 경우 크기 향상과 균형을 맞추어 보세요.
테이블 데이터가 있는 PDF를 사용하여 트리 구조 제거를 CompressAndSaveAs 테스트하십시오.
: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)
트리 구조 압축을 통해 파일 크기를 얼마나 줄일 수 있을까요?
67.90%로 감소됨. 표 PDF가 커짐에 따라 수치가 상승합니다.
두 가지 압축 방법을 동시에 적용하려면 어떻게 해야 할까요?
하나의 CompressAndSaveAs 호출에서 두 부풀림 소스를 동시에 수축시키려면 quality 값을 제공하고 removeStructureTree를 true에 설정하십시오. 이 조합은 차트가 있는 보고서나 임베디드 테이블이 있는 송장과 같은 이미지와 구조화된 데이터를 혼합한 문서에서 역할을 다합니다.
: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)
CompressAndSaveAs이 수용하는 매개변수는 무엇입니까?
-
outputPath(문자열): 압축된 PDF가 작성되는 파일 경로. -
quality(int?, 0에서 100): 모든 내장 이미지에 적용된 JPEG 품질. 낮은 값은 더 작은 파일을 만듭니다. 이미지 압축을 완전히 건너뛰려면null을 전달하십시오. removeStructureTree(bool, 기본값false):true일 때 PDF 구조 트리를 삭제하여 파일 크기를 더욱 줄입니다. 표가 포함된 HTML로 생성된 PDF에 가장 효과적입니다.
using 사례에 맞게 조정하세요. 보관 사본은 종종 품질을 크기보다 우선시하며, 웹 배포는 더 작은 파일을 권장합니다. 이러한 거래는 PDF/A 호환 문서를 압축할 때에도 적용됩니다. 이때 이미지 충실도가 우선일 수 있습니다.
압축에 대한 세부 제어를 어떻게 얻습니까?
대부분의 문서에는 인수가 두 개인 것이 충분하지만 이미지가 많은 아카이브와 엄격한 크기 예산은 때때로 더 많은 제어가 필요합니다. 압축 파이프라인을 조정하기 위해 AdvancedCompressionOptions 객체를 CompressAndSaveAs에 전달하십시오. 여기에는 이미지 DPI 다운샘플링, JPEG에 대한 재인코딩 품질 및 zlib 압축 레벨이 있습니다. 간단한 CompressAndSaveAs(outputPath, quality, removeStructureTree) 오버로드는 변함없이 작동하며 이전과 같은 출력을 생성합니다.
using IronPdf;
var pdf = PdfDocument.FromFile("input.pdf");
// Web or email: strong size reduction
pdf.CompressAndSaveAs("compressed.pdf", new AdvancedCompressionOptions
{
JpegQuality = 70,
TargetImageDpi = 150,
RemoveStructureTree = true
});
// Print quality: minimal quality loss
pdf.CompressAndSaveAs("print.pdf", new AdvancedCompressionOptions
{
JpegQuality = 90,
TargetImageDpi = 300
});
using IronPdf;
var pdf = PdfDocument.FromFile("input.pdf");
// Web or email: strong size reduction
pdf.CompressAndSaveAs("compressed.pdf", new AdvancedCompressionOptions
{
JpegQuality = 70,
TargetImageDpi = 150,
RemoveStructureTree = true
});
// Print quality: minimal quality loss
pdf.CompressAndSaveAs("print.pdf", new AdvancedCompressionOptions
{
JpegQuality = 90,
TargetImageDpi = 300
});
Imports IronPdf
Dim pdf = PdfDocument.FromFile("input.pdf")
' Web or email: strong size reduction
pdf.CompressAndSaveAs("compressed.pdf", New AdvancedCompressionOptions With {
.JpegQuality = 70,
.TargetImageDpi = 150,
.RemoveStructureTree = True
})
' Print quality: minimal quality loss
pdf.CompressAndSaveAs("print.pdf", New AdvancedCompressionOptions With {
.JpegQuality = 90,
.TargetImageDpi = 300
})
가장 영향을 크게 미치는 두 가지 속성은 JpegQuality 및 TargetImageDpi입니다:
JpegQuality(int?, 1에서 100, 기본값null): 이 JPEG 품질로 이미지를 다시 인코딩합니다. 이미지 재인코딩을 완전히 건너뛰려면null으로 두십시오.TargetImageDpi(int?, 기본값150): 재인코딩 전에 유효한 DPI가 이 값을 초과하는 이미지를 다운샘플링합니다. 다운샘플링을 비활성화하고 원래 해상도를 유지하려면null또는0로 설정하십시오.
추천되는 JpegQuality 값(설정한 경우에만 적용됩니다):
| 값 | 사용 사례 |
|---|---|
null (기본값) |
이미지 재인코딩 없음 |
95 |
아카이브, 최소한의 인공물 |
85 |
고품질 |
70 |
일반 용도로 적합한 균형 |
50 |
웹 또는 이메일, 가시적인 인공물이 있는 작은 파일 |
추천되는 TargetImageDpi 값(손실):
| 값 | 사용 사례 |
|---|---|
300 |
인쇄 품질, 일반 거리에서 눈에 볼 수 없는 무손실 |
200 |
고해상도 및 레티나 화면에서 선명합니다 |
150 (기본값) |
화면 및 이메일에 가장 적합한 크기 및 품질 균형 |
96 |
공격적, 부드러운 텍스트지만 여전히 읽을 수 있음 |
null 또는 0 |
비활성화되며 원래의 해상도를 보존합니다 |
TargetImageDpi 다운샘플링은 손실됩니다: 이미지가 다운샘플링되면 원래의 해상도로 복원할 수 없습니다. 해상도 감소 또는 품질 전용 재인코딩을 원할지 여부를 미리 결정하고 TargetImageDpi을(를) 적절히 설정하십시오.PDF 파일을 디스크에 저장하지 않고 압축하는 방법은 무엇인가요?
API 응답, 클라우드 기능 및 이메일 첨부 파일은 거의 디스크에 압축된 PDF가 필요하지 않습니다. CompressPdfToBytes은 결과를 바이트 배열로 반환하므로 당신이 정하는 곳에 바이트를 보낼 수 있습니다.
:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-to-bytes.cs
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");
// Return the compressed PDF as bytes so it can go straight into an HTTP
// response, a database varbinary column, or a queue message with no temp file
byte[] compressedBytes = pdf.CompressPdfToBytes();
File.WriteAllBytes("compressed.pdf", compressedBytes);
Imports IronPdf
Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")
' Return the compressed PDF as bytes so it can go straight into an HTTP
' response, a database varbinary column, or a queue message with no temp file
Dim compressedBytes As Byte() = pdf.CompressPdfToBytes()
File.WriteAllBytes("compressed.pdf", compressedBytes)
바이트 배열이 아닌 Stream이 필요한 경우 CompressPdfToStream을 호출하고 원하는 대상에 복사하십시오. 이것은 HTTP 응답 본문, 클라우드 저장소 업로드 또는 스트림 기반 워크플로에 출력 파이핑을 맞춥니다.
:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-to-stream.cs
using IronPdf;
using System.IO;
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");
// Stream output so the compressed bytes can be piped straight to an HTTP
// response or cloud upload without first buffering the whole file as byte[]
using Stream compressedStream = pdf.CompressPdfToStream();
// CompressPdfToStream returns a read-only Stream, so copy it to the destination
using FileStream fileStream = File.Create("compressed.pdf");
compressedStream.CopyTo(fileStream);
Imports IronPdf
Imports System.IO
Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")
' Stream output so the compressed bytes can be piped straight to an HTTP
' response or cloud upload without first buffering the whole file as byte()
Using compressedStream As Stream = pdf.CompressPdfToStream()
' CompressPdfToStream returns a read-only Stream, so copy it to the destination
Using fileStream As FileStream = File.Create("compressed.pdf")
compressedStream.CopyTo(fileStream)
End Using
End Using
Compression방법 옵션은 무엇이 있습니까?
두 CompressPdfToBytes 및 CompressPdfToStream은 작업 수행 방식을 결정하는 선택적 Compression방법 인수를 수용합니다. 배포 대상은 디스크 접근을 허용하는지 여부가 다르고, 모드는 적절한 거래를 고르게 합니다:
| 방법 | 디스크 접근 | 이미지 재샘플링 | 출력 크기 |
|---|---|---|---|
Automatic (기본값) |
디스크 시도, 메모리로 돌아가기 | 디스크가 사용 가능한 경우 | 허용되는 곳에서 가장 작음 |
FastMemory |
아니요ne | 아니요 | 더 큼 |
HighQuality |
임시 디렉터리가 필요 | 예 | 가장 작음 |
Automatic이(가) 처음 HighQuality을(를) 시도했고 임시 디렉토리를 사용할 수 없을 때 FastMemory로 떨어집니다. 아래 예제는 최소 출력을 위해 런타임 시 시스템 임시 디렉토리에 쓰기 접근이 필요합니다.
:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-mode.cs
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");
// HighQuality resamples images using the system temp directory, so it produces
// the smallest output but needs write access to that directory at runtime
byte[] compressedBytes = pdf.CompressPdfToBytes(50, false, CompressionMode.HighQuality);
File.WriteAllBytes("compressed.pdf", compressedBytes);
Imports IronPdf
Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")
' HighQuality resamples images using the system temp directory, so it produces
' the smallest output but needs write access to that directory at runtime
Dim compressedBytes As Byte() = pdf.CompressPdfToBytes(50, False, CompressionMode.HighQuality)
File.WriteAllBytes("compressed.pdf", compressedBytes)
산출
CompressPdfToBytes 및 CompressPdfToStream는 이제 Java, 아니요de.js 및 Python을 포함한 모든 IronPDF 플랫폼에서 사용할 수 있습니다.
결론
이제 이미지 재인코딩 및 구조 트리 삭제를 수행하는 하나의 메서드( CompressAndSaveAs)가 있으며, 선택한 Compression방법 아래 메모리 내에서 동일한 작업을 수행하기 위해 CompressPdfToBytes 및 CompressPdfToStream이(가) 있습니다. 자연스러운 다음 단계는 그러한 축소된 페이지를 PDF 래스터화로 썸네일로 변환하는 것입니다.
자주 묻는 질문
PDF 파일 크기를 압축을 통해 얼마나 줄일 수 있을까요?
결과는 콘텐츠에 따라 다릅니다. 보여진 예시에서 이미지 압축은 파일을 39.24% 줄이고 구조 트리 제거는 테이블이 많은 PDF를 67.90% 줄였습니다. 이미지가 많거나 테이블이 많은 문서는 가장 큰 절약 효과가 있습니다.
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를 각각 바이트 배열 또는 스트림으로 반환하는 CompressPdfToBytes 및 CompressPdfToStream 메서드를 제공합니다. 두 메서드 모두 Automatic, FastMemory 또는 HighQuality 압축 옵션을 지정할 수 있는 선택적 CompressionMode 매개변수를 지원합니다.
C# 이외의 다른 언어에서도 PDF 압축 기능을 사용할 수 있습니까?
네, CompressPdfToBytes 및 CompressPdfToStream은 이제 Java, Node.js, Python을 포함한 모든 IronPDF 플랫폼에서 사용할 수 있습니다.
C#에서 PDF 압축에 대한 세밀한 제어는 어떻게 얻을 수 있습니까?
AdvancedCompressionOptions 객체를 CompressAndSaveAs에 전달하여 이미지 DPI 다운샘플링을 위한 TargetImageDpi, JPEG 재인코딩 품질을 위한 JpegQuality, zlib CompressionLevel을 포함하여 파이프라인을 조정하세요. 기존 CompressAndSaveAs(outputPath, quality, removeStructureTree) 오버로드는 여전히 작동하며, 이전과 동일한 출력을 생성합니다.

