public static void Run() { // ExStart:RotatingStamp // The path to the documents directory. string dataDir = RunExamples.GetDataDir_AsposePdfFacades_TechnicalArticles(); // Set path of the image to be set as watermark string imageFile = dataDir + "aspose-logo.jpg"; // Set input file path string inFile = dataDir + "inFile.pdf"; // Set output file path string outFile = dataDir + "RotatingStamp_out.pdf"; // Create PdfFileInfo object to get height and width of the pages PdfFileInfo fileInfo = new PdfFileInfo(inFile); // Create Stamp object Aspose.Pdf.Facades.Stamp aStamp = new Aspose.Pdf.Facades.Stamp(); // Bind image file with the Stamp object aStamp.BindImage(imageFile); // Specify whether the stamp will be added as a background or not aStamp.IsBackground = false; // Specifies at which pages to add the watermark aStamp.Pages = new int[] { 1 }; // Specifies the watermark rotation - rotate at 90 degrees the stamp is rotated about the center point of the stamp object aStamp.Rotation = 90; // Specifies the position of stamp - lower left corner of the stamp aStamp.SetOrigin(fileInfo.GetPageWidth(1) / 2, fileInfo.GetPageHeight(1) / 2); // Set the size of the watermark aStamp.SetImageSize(100, 100); Document doc = new Document(inFile); // Create PdfFileStamp class to bind input and output files PdfFileStamp stamper = new PdfFileStamp(doc); // Add the stamp in the PDF file stamper.AddStamp(aStamp); // Close the PdfFileStamp object stamper.Close(); // ExEnd:RotatingStamp }
/// <summary> /// Вставляет изображения штампов электронной подписи на первую страницу указанного PDF-файла /// </summary> /// <param name="sessionContext">Контекст сессии</param> /// <param name="generatorType">Тип генератора изображений штампов электронной подписи</param> /// <param name="images">Массив изображений штампов электронной подписи</param> /// <param name="fileStream">Поток, содержащий PDF-файл, в который необходимо вставить указанные изображения</param> /// <returns>Модель файла со вставленными изображениями</returns> public GeneratedFileInfo Generate(SessionContext sessionContext, ImageGeneratorType generatorType, System.Drawing.Image[] images, Stream fileStream) { if (images is null) { throw new ArgumentNullException(nameof(images)); } if (fileStream is null) { throw new ArgumentNullException(nameof(fileStream)); } using (var pdfDocument = new Document(fileStream)) { var page = pdfDocument.Pages[1]; var pdfFileInfo = new PdfFileInfo(pdfDocument); double pageWidth = page.Rect.Width; double pageHeight = page.Rect.Height; // Вычисляем координаты первого изображения штампов электронной подписи var xIndent = pdfFileInfo.GetPageWidth(1) / pageWidth * PagePadding; var yIndent = pdfFileInfo.GetPageHeight(1) / pageHeight * PagePadding; // Максимальная высота изображения штампа в текущей строке (нужна для выравнивания изображений в строке) double maxImageHeight = 0; foreach (var imageHelper in images.Select(x => new ImageHelper(x))) { // Если верхняя левая координата текущего изображения больше высоты страницы PDF-документа, // то прекращаем вставку изображений if (yIndent + imageHelper.Height > pageHeight) { break; } // Если ширина строки вставленных изображений превышает ширину страницы, // то переходим на следующую строку if (xIndent + imageHelper.Width > pageWidth) { yIndent += maxImageHeight + ImageMargin; xIndent = PagePadding; maxImageHeight = imageHelper.Height; } // В противном случае вычисляем максимальную высоту изображения штампа в текущей строке else if (imageHelper.Height > maxImageHeight) { maxImageHeight = imageHelper.Height; } // Вставляем текущее изображение по указанным координатам InsertImage(page, imageHelper, xIndent, yIndent); // Вычисляем горизонтальную координату следующего изображения xIndent += imageHelper.Width + ImageMargin; } // Копируем в поток сформированный PDF-файл со вставленными изображениями штампов электронной подписи var outputStream = new MemoryStream(); pdfDocument.Save(outputStream); outputStream.Seek(0, SeekOrigin.Begin); return(new GeneratedFileInfo { Stream = outputStream }); } }