/// <summary>
        /// Creates the document to be saved.
        /// </summary>
        /// <param name="product">The product to create a PDF for.</param>
        /// <param name="controlsAccess">The control access list.</param>
        private void CreateDocument(ProductDefinition product, List<ControlAccess> controlsAccess)
        {
            this.document = this.CreateDocument(product.Name);

            ControlListRenderer listRenderer = new ControlListRenderer(this.document, controlsAccess);
            ControlRendererFactory rendererFactory = new ControlRendererFactory(this.document, listRenderer);

            this.document.Styles.AddStyle(PdfResources.StyleNameMandatory, StyleNames.Normal);
            this.document.Styles[PdfResources.StyleNameMandatory].Font.Color = Colors.Red;

            foreach (var page in product.FormDefinition.Pages.Where(p => p.PageType == PageType.UserDefined))
            {
                if (product.FormDefinition.Pages.Count > 1)
                {
                    this.document.LastSection.AddParagraph(page.PageTitle, StyleNames.Heading1);
                }

                listRenderer.Render(page.Controls, rendererFactory, 0, product.FormDefinition.Pages.AllControls);
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="LikertControlRenderer"/> class.
 /// </summary>
 /// <param name="listRenderer">The control list renderer instance.</param>
 /// <param name="factory">The control renderer factory.</param>
 public LikertControlRenderer(ControlListRenderer listRenderer, ControlRendererFactory factory)
     : base(listRenderer, factory)
 {
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="RepeaterOptionControlRenderer"/> class.
 /// </summary>
 /// <param name="listRenderer">The control list renderer instance.</param>
 /// <param name="factory">The control renderer factory.</param>
 public RepeaterOptionControlRenderer(ControlListRenderer listRenderer, ControlRendererFactory factory)
     : base(listRenderer, factory)
 {
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="GroupControlRenderer"/> class.
 /// </summary>
 /// <param name="listRenderer">The control list renderer instance.</param>
 /// <param name="factory">The control renderer factory.</param>
 public GroupControlRenderer(ControlListRenderer listRenderer, ControlRendererFactory factory)
     : base(listRenderer, factory)
 {
 }