Link Search Menu Expand Document

Draw Text On Rotated Page - C#

PDF SDK sample in C# demonstrating ‘Draw Text On Rotated Page’

Program.cs
using Bytescout.PDF;
using System.Diagnostics;
using System.Drawing;
using Brush = Bytescout.PDF.Brush;
using Font = Bytescout.PDF.Font;
using SolidBrush = Bytescout.PDF.SolidBrush;
using StringFormat = Bytescout.PDF.StringFormat;


namespace DrawHeaderAndFooterOnRotatedPage
{
    /// <summary>
    /// This example demonstrates how to add header and footer to rotated PDF pages.
    /// </summary>
    class Program
    {
        static void Main()
        {
            // Load document
            Document pdfDocument = new Document(@".\RotatedPages.pdf");
            pdfDocument.RegistrationName = "demo";
            pdfDocument.RegistrationKey = "demo";

            // If you wish to load an existing document uncomment the line below and comment the Add page section instead
            // pdfDocument.Load(@".\existing_document.pdf");

            string headerText = "Sample Header";
            string footerText = "Sample Footer";

            // Prepare StringFormat with Center text alignment
            StringFormat stringFormat = new StringFormat { HorizontalAlign = HorizontalAlign.Center };
            // Prepare drawing tools
            Font font = new Font(StandardFonts.Helvetica, 9);
            Brush brush = new SolidBrush(new ColorRGB(255, 0, 0));
            
            for (int i = 0; i < pdfDocument.Pages.Count; ++i)
            {
                Page page = pdfDocument.Pages[i];
                
                page.Canvas.SaveGraphicsState();

                // Calculate the coordinates of the text taking into account the page rotation:

                float headerY = 10;
                float footerY;
                float textRectWidth;
                float textRectHeight = font.GetTextHeight() + 5;

                if (page.RotationAngle == RotationAngle.Rotate0 || page.RotationAngle == RotationAngle.Rotate180)
                {
                    footerY = page.Height - textRectHeight - 10;
                    textRectWidth = page.Width;
                }
                else
                {
                    footerY = page.Width - textRectHeight - 10;
                    textRectWidth = page.Height;
                }

                // Rotate page canvas according to page rotation
                switch (page.RotationAngle)
                {
                    case RotationAngle.Rotate90:
                        page.Canvas.RotateTransform(-90);
                        page.Canvas.TranslateTransform(-page.Height, 0);
                        break;
                    case RotationAngle.Rotate180:
                        page.Canvas.RotateTransform(180);
                        page.Canvas.TranslateTransform(-page.Width, -page.Height);
                        break;
                    case RotationAngle.Rotate270:
                        page.Canvas.RotateTransform(-270);
                        page.Canvas.TranslateTransform(0, -page.Width);
                        break;
                }
                
                // Draw header and footer
                page.Canvas.DrawString(headerText, font, brush, new RectangleF(0, headerY, textRectWidth, textRectHeight), stringFormat);
                page.Canvas.DrawString(footerText, font, brush, new RectangleF(0, footerY, textRectWidth, textRectHeight), stringFormat);

                page.Canvas.RestoreGraphicsState();
            }
            
            // Save document to file
            pdfDocument.Save("result.pdf");

            // Cleanup 
            pdfDocument.Dispose();

            // Open result PDF document in default associated application (for demo purpose)
            ProcessStartInfo processStartInfo = new ProcessStartInfo("result.pdf");
            processStartInfo.UseShellExecute = true;
            Process.Start(processStartInfo);
        }
    }
}

Download Source Code (.zip)

Return to the previous page Explore PDF SDK


Copyright © 2016 - 2021 ByteScout