/// <summary>
        /// Regenerates the preview to reflect changes in the document layout.
        /// </summary>
        public void RefreshPreview()
        {
            // render into PrintController
            if (_doc != null)
            {
                // prepare to render preview document
                _img.Clear();
                PrintController savePC = _doc.PrintController;

                // render preview document
                try
                {
                    _cancel              = false;
                    _rendering           = true;
                    _doc.PrintController = new PreviewPrintController();
                    _doc.PrintPage      += _doc_PrintPage;
                    _doc.EndPrint       += _doc_EndPrint;
                    _doc.Print();
                }
                finally
                {
                    _cancel              = false;
                    _rendering           = false;
                    _doc.PrintPage      -= _doc_PrintPage;
                    _doc.EndPrint       -= _doc_EndPrint;
                    _doc.PrintController = savePC;
                }
            }

            // update
            OnPageCountChanged(EventArgs.Empty);
            UpdatePreview();
            UpdateScrollBars();
        }