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