이 C# 라이브러리는 개발자에게 PDF 문서를 프로그래밍 방식으로 빠르고 효율적으로 압축할 수 있는 기능을 제공합니다. 네트워크를 통해 인쇄, 보관 또는 공유할 수 있도록 최적화된 PDF 출력을 쉽게 얻을 수 있습니다. 타사 소프트웨어를 설치할 필요가 없는 C# 용 독립형 PDF 문서 처리 솔루션입니다.
당사 제품은 C# 개발자에게 PDF 파일의 크기를 줄이기 위한 통합 API를 제공합니다. PDF 압축은 두 단계로 수행됩니다. 첫 번째 패스 동안 PDF 의 모든 페이지가 이미지 형식으로 변환됩니다. 당사 제품은 개발자가 문서의 최적 품질을 유지하면서 컴팩트한 PDF 출력을 얻을 수 있도록 하는 적응형 및 고효율 이미지 압축 알고리즘을 사용합니다. 다음 단계에서는 일련의 이미지가 압축되고 결합되어 최적화된 새 PDF 파일의 내용을 형성합니다.
'Aspose.Words for .NET' 으로 PDF 압축이 쉬워졌습니다. 다음 예는 C# 에서 PDF 파일의 크기를 줄이는 방법을 보여줍니다.
dotnet add package Aspose.Words
복사
using Aspose.Words;
using Aspose.Words.Pdf2Word.FixedFormats;
using var pdfStream = File.OpenRead("Input.pdf");
var renderer = new PdfFixedRenderer();
var pdfReadOptions = new PdfFixedOptions
{
ImageFormat = FixedImageFormat.Jpeg,
JpegQuality = 50
};
const double maxPageDimension = 1584;
var pagesStream = renderer.SavePdfAsImages(pdfStream, pdfReadOptions);
var builder = new DocumentBuilder();
for (var i = 0; i < pagesStream.Count; ++i)
{
// 현재 페이지 이미지 크기 조정을 피하기 위해 최대 페이지 크기를 설정합니다.
var pageSetup = builder.PageSetup;
SetPageSize(pageSetup, maxPageDimension, maxPageDimension);
var pageImage = builder.InsertImage(pagesStream[i]);
SetPageSize(pageSetup, pageImage.Width, pageImage.Height);
pageSetup.TopMargin = 0;
pageSetup.LeftMargin = 0;
pageSetup.BottomMargin = 0;
pageSetup.RightMargin = 0;
if (i != pagesStream.Count - 1)
builder.InsertBreak(BreakType.SectionBreakNewPage);
}
var saveOptions = new PdfSaveOptions
{
CacheBackgroundGraphics = true
};
builder.Document.Save("Output.pdf", saveOptions);
private void SetPageSize(PageSetup pageSetup, double width, double height)
{
pageSetup.PageWidth = width;
pageSetup.PageHeight = height;
}
using Aspose.Words;
var doc = new Document("Input.pdf");
doc.Cleanup();
var nodes = doc.GetChildNodes(NodeType.Shape, true);
foreach (Shape shape in nodes)
{
if (shape.IsImage)
{
// 이미지 압축을 위한 라이브러리를 선택하는 것은 개발자의 몫입니다.
using var image = Image.FromStream(shape.ImageData.ToStream());
// ...
// 이미지를 압축하고 다시 모양으로 설정합니다.
shape.ImageData.SetImage("yourCompressedImage");
}
}
var saveOptions = new PdfSaveOptions
{
CacheBackgroundGraphics = true
};
doc.Save("Output.pdf", saveOptions);
using Aspose.Words;
var doc = new Document("Input.pdf");
doc.Cleanup();
var nodes = doc.GetChildNodes(NodeType.Shape, true);
foreach (Shape shape in nodes)
{
if (shape.IsImage)
{
// 이미지 압축을 위한 라이브러리를 선택하는 것은 개발자의 몫입니다.
using var image = Image.Fromstream(shape.ImageData.ToStream());
// ...
// 이미지를 압축하고 모양으로 다시 설정합니다.
shape.ImageData.SetImage("yourCompressedImage");
}
}
doc.Save("Output.pdf");
using Aspose.Words;
var doc = new Document("Input.pdf");
doc.Cleanup();
var nodes = doc.GetChildNodes(NodeType.Shape, true);
foreach (Shape shape in nodes)
{
if (shape.IsImage)
{
// 이미지 압축을 위한 라이브러리를 선택하는 것은 개발자의 몫입니다.
using var image = Image.FromStream(shape.ImageData.ToStream());
// ...
// 이미지를 압축하고 모양으로 다시 설정합니다.
shape.ImageData.SetImage("yourCompressedImage");
}
}
var saveOptions = new OoxmlSaveOptions
{
CompressionLevel = CompressionLevel.Maximum
};
doc.Save("Output.pdf", saveOptions);
using Aspose.Words;
var doc = new Document();
var builder = new DocumentBuilder(doc);
var shape = builder.InsertImage("Input.pdf");
var saveOptions = new ImageSaveOptions(SaveFormat.Pdf)
{
};
shape.GetShapeRenderer().Save("Output.pdf", saveOptions);
using Aspose.Words;
using Aspose.Words.Pdf2Word.FixedFormats;
using var pdfStream = File.OpenRead("Input.pdf");
var renderer = new PdfFixedRenderer();
var pdfReadOptions = new PdfFixedOptions
{
ImageFormat = FixedImageFormat.Jpeg,
JpegQuality = 50
};
const double maxPageDimension = 1584;
var pagesStream = renderer.SavePdfAsImages(pdfStream, pdfReadOptions);
var builder = new DocumentBuilder();
for (var i = 0; i < pagesStream.Count; ++i)
{
// 현재 페이지 이미지 크기 조정을 피하기 위해 최대 페이지 크기를 설정합니다.
var pageSetup = builder.PageSetup;
SetPageSize(pageSetup, maxPageDimension, maxPageDimension);
var pageImage = builder.InsertImage(pagesStream[i]);
SetPageSize(pageSetup, pageImage.Width, pageImage.Height);
pageSetup.TopMargin = 0;
pageSetup.LeftMargin = 0;
pageSetup.BottomMargin = 0;
pageSetup.RightMargin = 0;
if (i != pagesStream.Count - 1)
builder.InsertBreak(BreakType.SectionBreakNewPage);
}
var saveOptions = new PdfSaveOptions
{
CacheBackgroundGraphics = true
};
builder.Document.Save("Output.pdf", saveOptions);
private void SetPageSize(PageSetup pageSetup, double width, double height)
{
pageSetup.PageWidth = width;
pageSetup.PageHeight = height;
}
시스템에 "Aspose.Words for .NET" 을 설치하는 세 가지 대체 옵션이 있습니다. 귀하의 요구 사항과 유사한 것을 선택하고 단계별 지침을 따르십시오.
우리 제품은 완전히 크로스 플랫폼이며 모든 주요 .NET 구현을 지원합니다.
.NET 코드가 기본 하드웨어나 운영 체제에 의존하지 않고 가상 머신에만 의존하는 한 Windows, macOS, Android, iOS 및 Linux용 모든 종류의 소프트웨어를 자유롭게 개발할 수 있습니다. 해당 버전의 .NET Framework, .NET Core, Windows Azure, Mono 또는 Xamarin 설치했는지 확인하세요.
C#, F#, VB.NET 애플리케이션을 생성하려면 Microsoft Visual Studio, Xamarin 및 MonoDevelop 통합 개발 환경을 사용하는 것이 좋습니다.
자세한 내용은 제품 설명서 를 참조하십시오.
다른 많은 파일 형식으로 파일을 최적화할 수 있습니다.