Esempio n. 1
0
        public FlowDocument MergeDocument(string id, string title)
        {
            FlowDocument mergedDocument = new FlowDocument();

            Run       run = new Run(title);
            Paragraph par = new Paragraph {
                Margin = new Thickness(0, 0, 0, 20)
            };

            par.FontSize   = 24;
            par.FontFamily = new FontFamily(Defaults.NoteFont);
            par.Foreground = new SolidColorBrush {
                Color = (Color)ColorConverter.ConvertFromString(Defaults.PrintTitleColor)
            };
            Run       run2 = new Run("");
            Paragraph par2 = new Paragraph();

            par.Inlines.Add(run);
            par2.Inlines.Add(run2);
            mergedDocument.Blocks.Add(par);
            mergedDocument.Blocks.Add(par2);

            FlowDocument tempDoc = new FlowDocument();

            LoadNote(tempDoc, new Database.Entities.Note {
                Id = id
            });

            var hyperlinks = VisualTreeUtils.GetVisuals(tempDoc).OfType <Hyperlink>();

            foreach (Hyperlink link in hyperlinks)
            {
                link.Foreground = new SolidColorBrush {
                    Color = (Color)ColorConverter.ConvertFromString(Defaults.PrintLinkColor)
                };
            }

            TextRange trTemp = new TextRange(tempDoc.ContentStart, tempDoc.ContentEnd);

            using (MemoryStream ms = new MemoryStream())
            {
                trTemp.Save(ms, System.Windows.DataFormats.Rtf);

                TextRange trMerged = new TextRange(mergedDocument.ContentEnd, mergedDocument.ContentEnd);
                trMerged.Load(ms, System.Windows.DataFormats.Rtf);

                ms.Close();
            }

            return(mergedDocument);
        }