Add Image to PDF using C#

Contents
[ ]
기본적으로 JPEG 품질은 100%로 설정됩니다. 더 나은 압축과 품질을 적용하려면 다음 오버로드를 사용하세요:
- XImageCollection 클래스에 추가된 Replace 메소드 오버로드: public void Replace(int index, Stream stream, int quality) - XImageCollection 클래스에 추가된 Add 메소드 오버로드: public void Add(Stream stream, int quality) ## 기존 PDF 파일에 이미지 추가하기 (Facades) PDF 파일에 이미지를 추가하는 또 다른 간단한 방법도 있습니다. PDF 파일에 이미지를 추가하는 또 다른 간단한 방법도 있습니다. ```csharp string imageFileName = Path.Combine(_dataDir, "Images", "Sample-01.jpg"); string outputPdfFileName = Path.Combine(_dataDir, "Example-add-image-mender.pdf"); Document document = new Document(); Page page = document.Pages.Add(); page.SetPageSize(PageSize.A3.Height, PageSize.A3.Width); page = document.Pages.Add(); Aspose.Pdf.Facades.PdfFileMend mender = new Aspose.Pdf.Facades.PdfFileMend(document); mender.AddImage(imageFileName, 1, 0, 0, (float)page.CropBox.Width, (float)page.CropBox.Height); document.Save(outputPdfFileName); ``` ## 페이지에 이미지 배치하고 종횡비를 유지(제어)하기 이미지의 크기를 모를 경우 페이지에 왜곡된 이미지가 나타날 수 있습니다. 다음 예제는 이를 피하는 방법 중 하나를 보여줍니다. ```csharp public static void AddingImageAndPreserveAspectRatioIntoPDF() { var bitmap = System.Drawing.Image.FromFile(_dataDir + "3410492.jpg"); int width; int height; width = bitmap.Width; height = bitmap.Height; var document = new Aspose.Pdf.Document(); var page = document.Pages.Add(); int scaledWidth = 400; int scaledHeight = scaledWidth * height / width; page.AddImage(_dataDir + "3410492.jpg", new Aspose.Pdf.Rectangle(10, 10, scaledWidth, scaledHeight)); document.Save(_dataDir + "sample_image.pdf"); } ``` ## PDF 내 이미지가 컬러인지 흑백인지 확인하기 이미지 크기를 줄이기 위해 다양한 종류의 압축을 적용할 수 있습니다. 이미지에 적용되는 압축 유형은 원본 이미지의 ColorSpace에 따라 다릅니다. 즉, 이미지가 컬러(RGB)인 경우 JPEG2000 압축을 적용하고, 흑백인 경우 JBIG2/JBIG2000 압축을 적용해야 합니다. 따라서 각 이미지 유형을 식별하고 적절한 압축 유형을 사용하는 것이 최적의 결과를 만들어냅니다. PDF 파일에는 텍스트, 이미지, 그래프, 첨부 파일, 주석 등의 요소가 포함될 수 있으며, 원본 PDF 파일에 이미지가 포함되어 있는 경우 이미지의 색상 공간을 확인하고 이미지 압축을 적용하여 PDF 파일 크기를 줄일 수 있습니다. 다음 코드 조각은 PDF 내 이미지가 컬러인지 흑백인지 식별하는 단계를 보여줍니다. ```csharp // 완전한 예제와 데이터 파일은 https://github.com/aspose-pdf/Aspose.PDF-for-.NET 에서 확인해주세요. // 문서 디렉토리 경로입니다. string dataDir = RunExamples.GetDataDir_AsposePdf_Images(); // 회색조 이미지 카운터 int grayscaled = 0; // RGB 이미지 카운터 int rgd = 0; using (Document document = new Document(dataDir + "ExtractImages.pdf")) { foreach (Page page in document.Pages) { Console.WriteLine("--------------------------------"); ImagePlacementAbsorber abs = new ImagePlacementAbsorber(); page.Accept(abs); // 특정 페이지에서 이미지 개수 가져오기 Console.WriteLine("Total Images = {0} over page number {1}", abs.ImagePlacements.Count, page.Number); // Document.Pages[29].Accept(abs); int image_counter = 1; foreach (ImagePlacement ia in abs.ImagePlacements) { ColorType colorType = ia.Image.GetColorType(); switch (colorType) { case ColorType.Grayscale: ++grayscaled; Console.WriteLine("Image {0} is GrayScale...", image_counter); break; case ColorType.Rgb: ++rgd; Console.WriteLine("Image {0} is RGB...", image_counter); break; } image_counter += 1; } } } ``` ## 이미지 품질 제어 PDF 파일에 추가되는 이미지의 품질을 제어할 수 있습니다. [XImageCollection](https://reference.aspose.com/pdf/net/aspose.pdf/ximagecollection) 클래스의 [Replace](https://reference.aspose.com/pdf/net/aspose.pdf.ximagecollection/replace/methods/1) 메소드를 사용하세요. 다음 코드 스니펫은 모든 문서 이미지를 80% 품질로 압축하는 JPEG로 변환하는 방법을 보여줍니다. ```csharp Aspose.PDF.Document pdfDocument = new Aspose.PDF.Document(inFile); foreach (Aspose.PDF.Page page in pdfDocument.Pages) { int idx = 1; foreach (Aspose.PDF.XImage image in page.Resources.Images) { using (MemoryStream imageStream = new MemoryStream()) { image.Save(imageStream, System.Drawing.Imaging.ImageFormat.Jpeg); page.Resources.Images.Replace(idx, imageStream, 80); idx = idx + 1; } } } // pdfDocument.OptimizeResources(); pdfDocument.Save(outFile); ```