private static void PrependAndAppendPageContent(string resultFileName) { string initialDocument = InputFileMultipageDocument; string resultDocument = Path.Combine(ResultDirName, resultFileName); using (PdfStreamWriter fileWriter = new PdfStreamWriter(File.OpenWrite(resultDocument))) { using (PdfFileSource fileSource = new PdfFileSource(File.OpenRead(initialDocument))) { RadFixedPage backgroundContentOwner = GenerateBackgroundImageContent(InputFileBackgroundImage); RadFixedPage foregroundContentOwner = GenerateForegroundTextContent("WATERMARK"); foreach (PdfPageSource pageSource in fileSource.Pages) { using (PdfPageStreamWriter pageWriter = fileWriter.BeginPage(pageSource.Size, pageSource.Rotation)) { using (pageWriter.SaveContentPosition()) { double xCenteringTranslation = (pageSource.Size.Width - backgroundContentOwner.Size.Width) / 2; double yCenteringTranslation = (pageSource.Size.Height - backgroundContentOwner.Size.Height) / 2; pageWriter.ContentPosition.Translate(xCenteringTranslation, yCenteringTranslation); pageWriter.WriteContent(backgroundContentOwner); } pageWriter.WriteContent(pageSource); using (pageWriter.SaveContentPosition()) { double xCenteringTranslation = (pageSource.Size.Width - foregroundContentOwner.Size.Width) / 2; double yCenteringTranslation = (pageSource.Size.Height - foregroundContentOwner.Size.Height) / 2; pageWriter.ContentPosition.Translate(xCenteringTranslation, yCenteringTranslation); pageWriter.WriteContent(foregroundContentOwner); } } } } } }
private static void FitAndPositionMultiplePagesOnSinglePage(string resultFileName) { string initialDocument = InputFileMultipageDocument; string resultDocument = Path.Combine(ResultDirName, resultFileName); using (PdfStreamWriter fileWriter = new PdfStreamWriter(File.OpenWrite(resultDocument))) { using (PdfFileSource fileSource = new PdfFileSource(File.OpenRead(initialDocument))) { double halfWidth = fileSource.Pages[0].Size.Width / 2; double halfHeight = fileSource.Pages[0].Size.Height / 2; Vector[] translateDirections = new Vector[] { new Vector(0, 0), new Vector(1, 0), new Vector(0, 1), new Vector(1, 1) }; PdfPageStreamWriter resultPage = null; for (int i = 0; i < fileSource.Pages.Length; i++) { if (i % 4 == 0) { if (i > 0) { resultPage.Dispose(); } resultPage = fileWriter.BeginPage(fileSource.Pages[0].Size, fileSource.Pages[0].Rotation); resultPage.ContentPosition.Scale(0.5, 0.5); } Vector direction = translateDirections[i % 4]; resultPage.ContentPosition.Translate(direction.X * halfWidth, direction.Y * halfHeight); PdfPageSource sourcePage = fileSource.Pages[i]; resultPage.WriteContent(sourcePage); } resultPage.Dispose(); } } }