Word Bookmark in Silverlight

  • Demo
  • App.xaml
  • App.xaml.cs
  • App.xaml.vb
  • MainPage.xaml
  • MainPage.xaml.cs
  • MainPage.xaml.vb

The sample demonstrates how to add bookmark into Word for Silverlight via Spire.Doc.

 

<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
             x:Class="Bookmark_Doc.App">
             
    <Application.Resources>
        
    </Application.Resources>
</Application>

using System;
using System.Windows;

namespace Bookmark_Doc
{
    public partial class App : Application
    {

        public App()
        {
            this.Startup += this.Application_Startup;
            this.Exit += this.Application_Exit;
            this.UnhandledException += this.Application_UnhandledException;

            InitializeComponent();
        }

        private void Application_Startup(object sender, StartupEventArgs e)
        {
            this.RootVisual = new MainPage();
        }

        private void Application_Exit(object sender, EventArgs e)
        {

        }

        private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
        {
            // If the app is running outside of the debugger then report the exception using
            // the browser's exception mechanism. On IE this will display it a yellow alert 
            // icon in the status bar and Firefox will display a script error.
            if (!System.Diagnostics.Debugger.IsAttached)
            {

                // NOTE: This will allow the application to continue running after an exception has been thrown
                // but not handled. 
                // For production applications this error handling should be replaced with something that will 
                // report the error to the website and stop the application.
                e.Handled = true;
                Deployment.Current.Dispatcher.BeginInvoke(delegate { ReportErrorToDOM(e); });
            }
        }

        private void ReportErrorToDOM(ApplicationUnhandledExceptionEventArgs e)
        {
            try
            {
                string errorMsg = e.ExceptionObject.Message + e.ExceptionObject.StackTrace;
                errorMsg = errorMsg.Replace('"', '\'').Replace("\r\n", @"\n");

                System.Windows.Browser.HtmlPage.Window.Eval("throw new Error(\"Unhandled Error in Silverlight Application " + errorMsg + "\");");
            }
            catch (Exception)
            {
            }
        }
    }
}

Imports System.Windows

Namespace Bookmark_Doc
	Partial Public Class App
		Inherits Application

		Public Sub New()
			AddHandler Me.Startup, AddressOf Application_Startup
			AddHandler Me.Exit, AddressOf Application_Exit
			AddHandler Me.UnhandledException, AddressOf Application_UnhandledException

			InitializeComponent()
		End Sub

		Private Sub Application_Startup(ByVal sender As Object, ByVal e As StartupEventArgs)
			Me.RootVisual = New MainPage()
		End Sub

		Private Sub Application_Exit(ByVal sender As Object, ByVal e As EventArgs)

		End Sub

		Private Sub Application_UnhandledException(ByVal sender As Object, ByVal e As ApplicationUnhandledExceptionEventArgs)
			' If the app is running outside of the debugger then report the exception using
			' the browser's exception mechanism. On IE this will display it a yellow alert 
			' icon in the status bar and Firefox will display a script error.
			If Not Debugger.IsAttached Then

				' NOTE: This will allow the application to continue running after an exception has been thrown
				' but not handled. 
				' For production applications this error handling should be replaced with something that will 
				' report the error to the website and stop the application.
				e.Handled = True
				Deployment.Current.Dispatcher.BeginInvoke(Sub() ReportErrorToDOM(e))
			End If
		End Sub

		Private Sub ReportErrorToDOM(ByVal e As ApplicationUnhandledExceptionEventArgs)
			Try
				Dim errorMsg As String = e.ExceptionObject.Message + e.ExceptionObject.StackTrace
				errorMsg = errorMsg.Replace(""""c, "'"c).Replace(vbCrLf, vbLf)

				System.Windows.Browser.HtmlPage.Window.Eval("throw new Error(""Unhandled Error in Silverlight Application " & errorMsg & """);")
			Catch e1 As Exception
			End Try
		End Sub
	End Class
End Namespace

<UserControl x:Class="Bookmark_Doc.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">

    <Grid x:Name="LayoutRoot" Background="White">
        <Button Content="RUN" Height="23" HorizontalAlignment="Left" Margin="286,265,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
    </Grid>
</UserControl>    

using System.Windows;
using System.Windows.Controls;
using System.IO;

using Spire.Doc;
using Spire.Doc.Documents;

namespace Bookmark_Doc
{
    public partial class MainPage : UserControl
    {
        private SaveFileDialog saveFile = null;
        public MainPage()
        {
            InitializeComponent();
            this.saveFile = new SaveFileDialog();
            this.saveFile.Filter = "Word Document(*.doc)|*.doc";
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            //create a word document
            Document document = new Document();

            //add one section
            Section section = document.AddSection();

            AddBookmark(section);

            //save word document
            bool? result = this.saveFile.ShowDialog();
            if (result.HasValue && result.Value)
            {
                using (Stream stream = this.saveFile.OpenFile())
                {
                    document.SaveToStream(stream, FileFormat.Docx);
                }
            }


        }

        private void AddBookmark(Section section)
        {
            Paragraph paragraph = section.Paragraphs.Count > 0 ? section.Paragraphs[0] : section.AddParagraph();

            paragraph.AppendText("This is a sample demonstrates how to use bookmark in Spire.Doc");
            paragraph.ApplyStyle(BuiltinStyle.Heading2);

            //writing simple bookmarks
            paragraph = section.AddParagraph();
            paragraph.AppendText("Simple Bookmark1");
            paragraph.ApplyStyle(BuiltinStyle.Heading4);
            paragraph = section.AddParagraph();
            paragraph.AppendBookmarkStart("Simple_Bookmark1");
            paragraph.AppendText(" This is the first simple bookmark");
            paragraph.AppendBookmarkEnd("Simple_Bookmark1");
            paragraph = section.AddParagraph();
            paragraph.AppendText("Simple Bookmark2");
            paragraph.ApplyStyle(BuiltinStyle.Heading4);
            paragraph = section.AddParagraph();
            paragraph.AppendBookmarkStart("Simple_Bookmark2");
            paragraph.AppendText(" This is the second simple bookmark\n");
            paragraph.AppendBookmarkEnd("Simple_Bookmark2");

            //writing nested bookmarks
            paragraph = section.AddParagraph();
            paragraph.AppendText("Nested bookmarks");
            paragraph.ApplyStyle(BuiltinStyle.Heading4);
            paragraph = section.AddParagraph();
            paragraph.AppendBookmarkStart("Root");
            paragraph.AppendText(" Root data ");
            paragraph.AppendBookmarkStart("NestedLevel1");
            paragraph.AppendText(" Nested Level1 ");
            paragraph.AppendBookmarkStart("NestedLevel2");
            paragraph.AppendText(" Nested Level2 ");
            paragraph.AppendBookmarkEnd("NestedLevel2");
            paragraph.AppendText(" Data Level1 ");
            paragraph.AppendBookmarkEnd("NestedLevel1");
            paragraph.AppendText(" Data Root ");
            paragraph.AppendBookmarkEnd("Root");
        }
    }
}

Imports System.Windows
Imports System.Windows.Controls
Imports System.IO

Imports Spire.Doc
Imports Spire.Doc.Documents

Namespace Bookmark_Doc
	Partial Public Class MainPage
		Inherits UserControl
		Private saveFile As SaveFileDialog = Nothing
		Public Sub New()
			InitializeComponent()
			Me.saveFile = New SaveFileDialog()
			Me.saveFile.Filter = "Word Document(*.doc)|*.doc"
		End Sub

		Private Sub button1_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
			'create a word document
			Dim document As New Document()

			'add one section
			Dim section As Section = document.AddSection()

			AddBookmark(section)

			'save word document
			Dim result? As Boolean = Me.saveFile.ShowDialog()
			If result.HasValue AndAlso result.Value Then
				Using stream As Stream = Me.saveFile.OpenFile()
					document.SaveToStream(stream, FileFormat.Docx)
				End Using
			End If


		End Sub

		Private Sub AddBookmark(ByVal section As Section)
			Dim paragraph As Paragraph = If(section.Paragraphs.Count > 0, section.Paragraphs(0), section.AddParagraph())

			paragraph.AppendText("This is a sample demonstrates how to use bookmark in Spire.Doc")
			paragraph.ApplyStyle(BuiltinStyle.Heading2)

			'writing simple bookmarks
			paragraph = section.AddParagraph()
			paragraph.AppendText("Simple Bookmark1")
			paragraph.ApplyStyle(BuiltinStyle.Heading4)
			paragraph = section.AddParagraph()
			paragraph.AppendBookmarkStart("Simple_Bookmark1")
			paragraph.AppendText(" This is the first simple bookmark")
			paragraph.AppendBookmarkEnd("Simple_Bookmark1")
			paragraph = section.AddParagraph()
			paragraph.AppendText("Simple Bookmark2")
			paragraph.ApplyStyle(BuiltinStyle.Heading4)
			paragraph = section.AddParagraph()
			paragraph.AppendBookmarkStart("Simple_Bookmark2")
			paragraph.AppendText(" This is the second simple bookmark" & vbLf)
			paragraph.AppendBookmarkEnd("Simple_Bookmark2")

			'writing nested bookmarks
			paragraph = section.AddParagraph()
			paragraph.AppendText("Nested bookmarks")
			paragraph.ApplyStyle(BuiltinStyle.Heading4)
			paragraph = section.AddParagraph()
			paragraph.AppendBookmarkStart("Root")
			paragraph.AppendText(" Root data ")
			paragraph.AppendBookmarkStart("NestedLevel1")
			paragraph.AppendText(" Nested Level1 ")
			paragraph.AppendBookmarkStart("NestedLevel2")
			paragraph.AppendText(" Nested Level2 ")
			paragraph.AppendBookmarkEnd("NestedLevel2")
			paragraph.AppendText(" Data Level1 ")
			paragraph.AppendBookmarkEnd("NestedLevel1")
			paragraph.AppendText(" Data Root ")
			paragraph.AppendBookmarkEnd("Root")
		End Sub
	End Class
End Namespace

Coupon Code Copied!

Christmas Sale

Celebrate the season with exclusive savings

Save 10% Sitewide

Use Code:

View Campaign Details