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();
                }
            }
        }