    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;

    using System.Drawing;

    // Use EVO PDF Namespace
    using EvoPdfClient;

    namespace EvoHtmlToPdfDemo.PDF_Creator
    {
        public partial class Image_Elements : System.Web.UI.Page
        {
            protected void createPdfButton_Click(object sender, EventArgs e)
            {
                // Get the server IP and port
                String serverIP = textBoxServerIP.Text;
                uint serverPort = uint.Parse(textBoxServerPort.Text);

                // Create a PDF document
                Document pdfDocument = null;
                if (radioButtonUseTcpService.Checked)
                    pdfDocument = new Document(serverIP, serverPort);
                else
                    pdfDocument = new Document(true, textBoxWebServiceUrl.Text);

                // Set optional service password
                if (textBoxServicePassword.Text.Length > 0)
                    pdfDocument.ServicePassword = textBoxServicePassword.Text;

                // Set license key received after purchase to use the converter in licensed mode
                // Leave it not set to use the converter in demo mode
                pdfDocument.LicenseKey = "4W9+bn19bn5ue2B+bn1/YH98YHd3d3c=";

                // The titles font used to mark various sections of the PDF document
                PdfFont titleFont = new PdfFont("Times New Roman", 12, true);
                titleFont.Bold = true;
                PdfFont subtitleFont = new PdfFont("Times New Roman", 8, true);
                subtitleFont.Bold = true;

                // Create a PDF page in PDF document
                PdfPage pdfPage = pdfDocument.AddPage();

                // Add section title
                TextElement titleTextElement = new TextElement(5, 5, "Images Scaling", titleFont);
                titleTextElement.ForeColor = RgbColor.Black;
                pdfPage.AddElement(titleTextElement);

                // Add an unscaled image

                // Add section title
                TextElement subtitleTextElement = new TextElement(0, 0, "Unscaled small image with normal resolution", subtitleFont);
                subtitleTextElement.ForeColor = RgbColor.Navy;
                pdfDocument.AddElement(subtitleTextElement, 10);

                string imagePath = Server.MapPath("~/DemoAppFiles/Input/Images/picture_small.jpg");
                ImageElement unscaledImageElement = new ImageElement(0, 0, imagePath);
                pdfDocument.AddElement(unscaledImageElement, 10);

                // Add a large image scaled down to same size in PDF

                // Add section title
                subtitleTextElement = new TextElement(0, 0, "Scaled down large image has higher resolution", subtitleFont);
                subtitleTextElement.ForeColor = RgbColor.Navy;
                pdfDocument.AddElement(subtitleTextElement, 10);

                imagePath = Server.MapPath("~/DemoAppFiles/Input/Images/picture_large.jpg");
                ImageElement scaledDownImageElement = new ImageElement(0, 0, 50, imagePath);
                pdfDocument.AddElement(scaledDownImageElement, 10);

                // Add a border around the scaled down image
                RectangleElement borderElement = new RectangleElement(0, 0, 0, 0);
                pdfDocument.AddElement(borderElement);

                // Add an unscaled small image

                // Add section title
                subtitleTextElement = new TextElement(0, 0, "Unscaled small image", subtitleFont);
                subtitleTextElement.ForeColor = RgbColor.Navy;
                pdfDocument.AddElement(subtitleTextElement, 10);

                imagePath = Server.MapPath("~/DemoAppFiles/Input/Images/picture_smaller.jpg");
                unscaledImageElement = new ImageElement(0, 0, imagePath);
                pdfDocument.AddElement(unscaledImageElement, 10);

                // Add an enlarged image

                // Add section title
                subtitleTextElement = new TextElement(0, 0, "Enlarged small image has lower resolution", subtitleFont);
                subtitleTextElement.ForeColor = RgbColor.Navy;
                pdfDocument.AddElement(subtitleTextElement, 10);

                imagePath = Server.MapPath("~/DemoAppFiles/Input/Images/picture_smaller.jpg");
                ImageElement enlargedImageElement = new ImageElement(0, 0, 200, imagePath);
                // Allow the image to be enlarged
                enlargedImageElement.EnlargeEnabled = true;
                pdfDocument.AddElement(enlargedImageElement, 10);

                // Scale an image preserving the aspect ratio

                // Add section title
                subtitleTextElement = new TextElement(0, 0, "Scaled down image preserving aspect ratio", subtitleFont);
                subtitleTextElement.ForeColor = RgbColor.Navy;
                pdfDocument.AddElement(subtitleTextElement, 10);

                imagePath = Server.MapPath("~/DemoAppFiles/Input/Images/landscape.jpg");
                ImageElement keepAspectImageElement = new ImageElement(0, 0, 80, 80, true, imagePath);
                pdfDocument.AddElement(keepAspectImageElement, 10);

                borderElement = new RectangleElement(0, 0, 0, 0);
                borderElement.ForeColor = RgbColor.Black;
                pdfDocument.AddElement(borderElement);

                // Scale an image without preserving aspect ratio
                // This can produce a distorted image

                // Add section title
                subtitleTextElement = new TextElement(0, 0, "Scaled down image without preserving aspect ratio", subtitleFont);
                subtitleTextElement.ForeColor = RgbColor.Navy;
                pdfDocument.AddElement(subtitleTextElement, 10);

                imagePath = Server.MapPath("~/DemoAppFiles/Input/Images/landscape.jpg");
                ImageElement notKeepAspectImageElement = new ImageElement(0, 0, 80, 80, false, imagePath);
                pdfDocument.AddElement(notKeepAspectImageElement, 10);

                borderElement = new RectangleElement(0, 0, 0, 0);
                borderElement.ForeColor = RgbColor.Black;
                pdfDocument.AddElement(borderElement);

                // Add transparent images

                // Add section title
                titleTextElement = new TextElement(0, 0, "Transparent Images", titleFont);
                titleTextElement.ForeColor = RgbColor.Black;
                pdfDocument.AddElement(titleTextElement, 10);

                imagePath = Server.MapPath("~/DemoAppFiles/Input/Images/transparent.png");
                ImageElement trasparentImageElement = new ImageElement(0, 0, 150, imagePath);
                pdfDocument.AddElement(trasparentImageElement, 10);

                imagePath = Server.MapPath("~/DemoAppFiles/Input/Images/rose.png");
                trasparentImageElement = new ImageElement(0, 0, 150, imagePath);
                pdfDocument.AddElement(trasparentImageElement, 10);

                // Rotate images

                // Add a new page to document
                pdfPage = pdfDocument.AddPage();

                // Add section title
                titleTextElement = new TextElement(0, 0, "Rotated Images", titleFont);
                titleTextElement.ForeColor = RgbColor.Black;
                pdfPage.AddElement(titleTextElement);

                // Add a not rotated image
                imagePath = Server.MapPath("~/DemoAppFiles/Input/Images/compass.png");
                ImageElement noRotationImageElement = new ImageElement(0, 25, 125, imagePath);
                pdfPage.AddElement(noRotationImageElement);

                // The rotated coordinates system location
                float rotatedImageXLocation = 125;
                float rotatedImageYLocation = 175;

                // Add the image rotated 90 degrees
                ImageElement rotate90ImageElement = new ImageElement(0, 0, 125, imagePath);
                rotate90ImageElement.Translate(rotatedImageXLocation, rotatedImageYLocation);
                rotate90ImageElement.Rotate(90);
                pdfPage.AddElement(rotate90ImageElement);

                rotatedImageXLocation = 125;
                rotatedImageYLocation = 450;

                // Add the image rotated 180 degrees
                ImageElement rotate180ImageElement = new ImageElement(0, 0, 125, imagePath);
                rotate180ImageElement.Translate(rotatedImageXLocation, rotatedImageYLocation);
                rotate180ImageElement.Rotate(180);
                pdfPage.AddElement(rotate180ImageElement);

                rotatedImageXLocation = 0;
                rotatedImageYLocation = 600;

                // Add the image rotated 270 degrees
                ImageElement rotate270ImageElement = new ImageElement(0, 0, 125, imagePath);
                rotate270ImageElement.Translate(rotatedImageXLocation, rotatedImageYLocation);
                rotate270ImageElement.Rotate(270);
                pdfPage.AddElement(rotate270ImageElement);

                // Save the PDF document in a memory buffer
                byte[] outPdfBuffer = pdfDocument.Save();

                // Send the PDF as response to browser

                // Set response content type
                Response.AddHeader("Content-Type", "application/pdf");

                // Instruct the browser to open the PDF file as an attachment or inline
                Response.AddHeader("Content-Disposition", String.Format("attachment; filename=Image_Elements.pdf; size={0}", outPdfBuffer.Length.ToString()));

                // Write the PDF document buffer to HTTP response
                Response.BinaryWrite(outPdfBuffer);

                // End the HTTP response and stop the current page processing
                Response.End();
            }

            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    sampleCodeLiteral.Text = System.IO.File.ReadAllText(Server.MapPath("~/DemoAppFiles/Input/Code_Samples/CSharp/AspNet/PDF_Creator/Image_Elements.html"));
                    descriptionLiteral.Text = System.IO.File.ReadAllText(Server.MapPath("~/DemoAppFiles/Input/Descriptions/AspNet/PDF_Creator/Image_Elements.html"));

                    Master.CollapseAll();
                    Master.ExpandNode("PDF_Creator");
                    Master.SelectNode("Image_Elements");
                }
            }

            protected void demoMenu_MenuItemClick(object sender, MenuEventArgs e)
            {
                switch (e.Item.Value)
                {
                    case "Live_Demo":
                        demoMultiView.SetActiveView(liveDemoView);
                        break;
                    case "Description":
                        demoMultiView.SetActiveView(descriptionView);
                        break;
                    case "Sample_Code":
                        demoMultiView.SetActiveView(sampleCodeView);
                        break;
                    default:
                        break;
                }
            }
        }
    }