using System; using System.Collections.Generic; using System.ComponentModel; using System.IO; using PdfSharp.Drawing; using PdfSharp.Pdf; namespace Library14Petrushin { public partial class PdfImg : Component { public PdfImg() { InitializeComponent(); } public PdfImg(IContainer container) { container.Add(this); InitializeComponent(); } public void CreatePdfDocument(string fileName, string documentTitle, List images) { // Проверка на заполненность входных данных if (string.IsNullOrEmpty(fileName) || string.IsNullOrEmpty(documentTitle) || images == null || images.Count == 0) { throw new ArgumentException("Все входные данные должны быть заполнены."); } // Создание PDF-документа PdfDocument document = new PdfDocument(); // Добавление заголовка документа на первую страницу PdfPage firstPage = document.AddPage(); XGraphics gfxFirstPage = XGraphics.FromPdfPage(firstPage); XFont font = new XFont("Arial", 20, XFontStyleEx.BoldItalic); gfxFirstPage.DrawString(documentTitle, font, XBrushes.Black, new XRect(0, 0, firstPage.Width, 50), XStringFormats.Center); // Добавление изображений в документ foreach (var imageData in images) { PdfPage page = document.AddPage(); XGraphics gfx = XGraphics.FromPdfPage(page); using (XImage img = XImage.FromFile(imageData.ImagePath)) { // Определяем размеры изображения double imageWidth = img.PixelWidth * 72 / img.HorizontalResolution; double imageHeight = img.PixelHeight * 72 / img.VerticalResolution; // Вычисляем масштаб, чтобы изображение поместилось на странице double scale = Math.Min(page.Width / imageWidth, page.Height / imageHeight); // Рисуем изображение на странице gfx.DrawImage(img, 0, 0, imageWidth * scale, imageHeight * scale); } } // Сохранение документа document.Save(fileName); } } // Класс для хранения данных об изображении public class ImageData { public string ImagePath { get; set; } } }