Tuesday, 28 December 2010 07:50

Extract Images from Word in C#, VB.NET

Solution in this guide demonstrates how to extract images from an existing Word document and save them to a specified path in C# and VB.NET via Spire.Doc for .NET.

Image is one kind of document objects which belongs to paragraph items. Spire.Doc for .NET provides a DocumentObject class to store images in Document. And also provides a DocPicture class to get and set images of document. Download and Install Spire.Doc for .NET. Follow steps to extract images from Word.

  • Get each Paragraph of each Section in Document.
  • Get each DocumentObject of ChildObjects in Paragraph.
  • If the gotten DocumentObjectType is Picture, initialize a DocPicture class instance and assign the DocumentObject as value for this instance.
  • Initialize a String class instance to name extracted image instead of its original name by invoking String.Format(String format, object arg0)
  • Invoke DocPictrue.Image.Save(String, ImageFormat) method to save images.
[C#]
            //Load document
            Document document = new Document(@"E:\Work\Documents\WordDocuments\Spire.Doc for .NET.docx");
            int index = 0;

            //Get Each Section of Document
            foreach (Section section in document.Sections)
            {
                //Get Each Paragraph of Section
                foreach (Paragraph paragraph in section.Paragraphs)
                {
                    //Get Each Document Object of Paragraph Items
                    foreach (DocumentObject docObject in paragraph.ChildObjects)
                    {
                        //If Type of Document Object is Picture, Extract.
                        if (docObject.DocumentObjectType == DocumentObjectType.Picture)
                        {
                            DocPicture picture = docObject as DocPicture;

                            //Name Image
                            String imageName = String.Format(@"images\Image-{0}.png", index);

                            //Save Image
                            picture.Image.Save(imageName, System.Drawing.Imaging.ImageFormat.Png);
                            index++;
                        }
                    }
                }
            }
[VB.NET]
            'Load document
            Dim document As New Document("E:\Work\Documents\WordDocuments\Spire.Doc for .NET.docx")
            Dim index As Integer = 0

            'Get Each Section of Document
            For Each section As Section In document.Sections
                'Get Each Paragraph of Section
                For Each paragraph As Paragraph In section.Paragraphs
                    'Get Each Document Object of Paragraph Items
                    For Each docObject As DocumentObject In paragraph.ChildObjects
                        'If Type of Document Object is Picture, Extract.
                        If docObject.DocumentObjectType = DocumentObjectType.Picture Then
                            Dim picture As DocPicture = TryCast(docObject, DocPicture)

                            'Name Image
                            Dim imageName As String = String.Format("images\Image-{0}.png", index)

                            'Save Image
                            picture.Image.Save(imageName, System.Drawing.Imaging.ImageFormat.Png)
                            index += 1
                        End If
                    Next docObject
                Next paragraph
            Next section

After debugging, all the extracted images are saved in a specified path. Open the directory, the images will be found.

Extract Word Image

Spire.Doc, an easy-to-use component to operate Word document, allows developers to fast generate, write, edit and save Word (Word 97-2003, Word 2007, Word 2010) in C# and VB.NET for .NET, Silverlight and WPF.

Tuesday, 28 December 2010 06:45

How to Traverse a Document Tree

Spire.Doc represents a document as a tree, every document element is a node of that tree. Some nodes such as section, paragraph and table may have many child nodes. For example, a section node has several paragraph nodes, a paragraph node has many text nodes and each row is the child node of a table node. And other nodes have no child node, such as text-range, image, form-field.
If a node has child nodes, it should be an instance of Spire.Doc.Interface.ICompositeObject.
If you want to operate all the nodes, you can use the tree navigation method to visit each node.

Document Tree Traversal

The following example demonstrates how to traverse a document tree to collect all nodes and ouput the text of all text-range nodes.
[C#]
using System;
using System.Collections.Generic;
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using Spire.Doc.Interface;
using Spire.Doc.Collections;

namespace ExtractText
{
    class Program
    {
        static void Main(string[] args)
        {
            //Open a word document.
            Document document = new Document("Sample.doc");
            IList<IDocumentObject> nodes = GetAllObjects(document);
            foreach (IDocumentObject node in nodes)
            {
                //Judge the object type. 
                if (node.DocumentObjectType == DocumentObjectType.TextRange)
                {
                    TextRange textNode = node as TextRange;
                    Console.WriteLine(textNode.Text);
                }
            }
        }

        private static IList<IDocumentObject> GetAllObjects(Document document)
        {
        
            //Create a list.
            List<IDocumentObject> nodes = new List<IDocumentObject>();
            
            //Create a new queue.
            Queue<ICompositeObject> containers = new Queue<ICompositeObject>();
            
            //Put the document objects in the queue.
            containers.Enqueue(document);
            while (containers.Count > 0)
            {
                ICompositeObject container = containers.Dequeue();
                DocumentObjectCollection docObjects = container.ChildObjects;
                foreach (DocumentObject docObject in docObjects)
                { 
                    nodes.Add(docObject);
                    
                    //Judge the docObject.
                    if (docObject is ICompositeObject)
                    {
                        containers.Enqueue(docObject as ICompositeObject);
                    }
                }
            }

            return nodes;
        }
    }
}
          
[VB.NET]
Imports System
Imports System.Collections.Generic
Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields
Imports Spire.Doc.Interface
Imports Spire.Doc.Collections

Module Module1

    Sub Main()
        'Open a word document.
        Dim document As New Document("Sample.doc")
        Dim nodes As IList(Of IDocumentObject)() = GetAllObjects(document)
        Dim containers As New Queue(Of ICompositeObject)()

        For Each node As IDocumentObject In nodes
        
            'Judge the object type.
            If (node.DocumentObjectType = DocumentObjectType.TextRange) Then
                Dim textNode As TextRange = node
                Console.WriteLine(textNode.Text)

            End If
        Next
    End Sub
    Function GetAllObjects(ByVal document As Document) As IList(Of IDocumentObject)
        
        'Create a list.
        Dim nodes As New List(Of IDocumentObject)()
        
        'Create a new queue.
        Dim containers As New Queue(Of ICompositeObject)()
        
        'Put the document objects in the queue.
        containers.Enqueue(document)
        While (containers.Count > 0)
            Dim container As ICompositeObject = containers.Dequeue()
            Dim docObjects As DocumentObjectCollection = container.ChildObjects
            For Each docObject As DocumentObject In docObjects
                nodes.Add(docObject)
                
                'Judge the docObject.
                If TypeOf docObject Is ICompositeObject Then
                    containers.Enqueue(TryCast(docObject, ICompositeObject))
                End If
            Next
        End While

        Return nodes
    End Function
End Module
          
Tuesday, 28 December 2010 02:25

Insert Word Bookmark in C#, VB.NET

Word bookmark is convenient for users to go to specified location and modify contents of bookmark range in a document. Solution in this guide introduces how to insert bookmark in existing Word document in C# and VB.NET via Spire.Doc for .NET. In this example, the bookmark range is from the end of the fourth paragraph to the end of the fifth paragraph. The following screenshot presents effect after Work bookmark inserting.

Insert Word Bookmark

Spire.Doc for .NET, a professional .NET Word component, provides two methods to insert Word bookmark, Paragraph.AppendBookmarkStart and Paragraph.AppendBookmarkEnd with parameter string name. The former method is used to append start of the bookmark with specified name into paragraph, while the later to append end of bookmark. Download and install Spire.Doc for .NET and follow the code to insert Word bookmark.

[C#]
using System;
using Spire.Doc;
using Spire.Doc.Documents;

namespace WordBookmark
{
    class Bookmark
    {
        static void Main(string[] args)
        {
            //Load Document
            Document document = new Document();
            document.LoadFromFile(@"E:\Work\Document\.NET Framework.docx");

            //Insert Bookmark
            Section section = document.Sections[0];
            section.Paragraphs[3].AppendBookmarkStart(".NETFramework");
            section.Paragraphs[4].AppendBookmarkEnd(".NETFramework");

            //Save and Launch 
            document.SaveToFile("Bookmark.docx", FileFormat.Docx);
            System.Diagnostics.Process.Start("Bookmark.docx");
        }
    }
}
[VB.NET]
Imports System
Imports Spire.Doc
Imports Spire.Doc.Documents

Namespace WordBookmark
    Friend Class Bookmark
        Shared Sub Main(ByVal args() As String)
            'Load Document
            Dim document As New Document()
            document.LoadFromFile("E:\Work\Document\.NET Framework.docx")

            'Insert Bookmark
            Dim section As Section = document.Sections(0)
            section.Paragraphs(3).AppendBookmarkStart(".NETFramework")
            section.Paragraphs(4).AppendBookmarkEnd(".NETFramework")

            'Save and Launch 
            document.SaveToFile("Bookmark.docx", FileFormat.Docx)
            System.Diagnostics.Process.Start("Bookmark.docx")
        End Sub
    End Class
End Namespace

Spire.Doc, an easy-to-use component to operate Word document, allows developers to fast generate, write, edit and save Word (Word 97-2003, Word 2007, Word 2010) in C# and VB.NET for .NET, Silverlight and WPF.

Tuesday, 21 December 2010 16:34

Insert Header/Footer in Word Document in C#

Word header appears in the top of each page in a document, while Word footer appears in the bottom. Header and footer can be text or images, for example, document title, time and date, page numbers, company logo etc. Also, users can change or format header/footer contents according to own requirement.

Spire.Doc for .NET, a professional component to manipulate Word document with .NET, enables developers to insert header/footer in Word document by using C#/VB.NET. And this guide will show details about how to realize this function.

Users can set header or footer for Word document through HeadersFooters property of Section Class which Spire.Doc for .NET provides. Then, invoke header/footer.AddParagraph() method to add header/footer paragraph and add contents by invoking paragraph.AppendText(string) method. Now Download and Install Spire.Doc for .NET. Then, use the following code to insert header/footer in Word.

Insert Word Header

[C#]
           //Add Header
            Section section = document.Sections[0];
            HeaderFooter header = section.HeadersFooters.Header;
            Paragraph HParagraph = header.AddParagraph();
            TextRange HText = HParagraph.AppendText("Spire.Doc for .NET");

            //Set Header Text Format
            HText.CharacterFormat.FontName = "Algerian";
            HText.CharacterFormat.FontSize = 15;
            HText.CharacterFormat.TextColor = Color.RoyalBlue;

            //Set Header Paragraph Format
            HParagraph.Format.HorizontalAlignment = HorizontalAlignment.Left;
            HParagraph.Format.Borders.Bottom.BorderType=BorderStyle.ThickThinMediumGap;
            HParagraph.Format.Borders.Bottom.Space = 0.05f;
            HParagraph.Format.Borders.Bottom.Color = Color.DarkGray;
[VB.NET]
             'Add Header
            Dim section As Section = document.Sections(0)
            Dim header As HeaderFooter = section.HeadersFooters.Header
            Dim HParagraph As Paragraph = header.AddParagraph()
            Dim HText As TextRange = HParagraph.AppendText("Spire.Doc for .NET")

            'Set Header Text Format
            HText.CharacterFormat.FontName = "Algerian"
            HText.CharacterFormat.FontSize = 15
            HText.CharacterFormat.TextColor = Color.RoyalBlue

            'Set Header Paragraph Format
            HParagraph.Format.HorizontalAlignment = HorizontalAlignment.Left
            HParagraph.Format.Borders.Bottom.BorderType = BorderStyle.ThickThinMediumGap
            HParagraph.Format.Borders.Bottom.Space = 0.05F
            HParagraph.Format.Borders.Bottom.Color = Color.DarkGray

Header Result:

Insert Text Header/Footer

Insert Word Footer

[C#]
           //Add Footer
            HeaderFooter footer = section.HeadersFooters.Footer;
            Paragraph FParagraph = footer.AddParagraph();
            TextRange FText = FParagraph.AppendText("E-iceblue Co., Ltd. 2012 All Rights Reserverd");

            //Set Footer Text Format
            FText.CharacterFormat.FontName = "Calibri";
            FText.CharacterFormat.FontSize = 12;
            FText.CharacterFormat.TextColor = Color.DarkCyan;

            //Set Footer Paragrah Format
            FParagraph.Format.HorizontalAlignment = HorizontalAlignment.Right;
            FParagraph.Format.Borders.Top.BorderType=BorderStyle.ThinThinSmallGap;
            FParagraph.Format.Borders.Top.Space = 0.15f;
            FParagraph.Format.Borders.Color = Color.DarkGray;
[VB.NET]
           'Add Footer
            Dim footer As HeaderFooter = section.HeadersFooters.Footer
            Dim FParagraph As Paragraph = footer.AddParagraph()
            Dim FText As TextRange = FParagraph.AppendText("E-iceblue Co., Ltd. 2012 All Rights Reserverd")

            'Set Footer Text Format
            FText.CharacterFormat.FontName = "Calibri"
            FText.CharacterFormat.FontSize = 12
            FText.CharacterFormat.TextColor = Color.DarkCyan

            'Set Footer Paragrah Format
            FParagraph.Format.HorizontalAlignment = HorizontalAlignment.Right
            FParagraph.Format.Borders.Top.BorderType = BorderStyle.ThinThinSmallGap
            FParagraph.Format.Borders.Top.Space = 0.15F
            FParagraph.Format.Borders.Color = Color.DarkGray

Footer Result:

Insert Text Header/Footer

Spire.Doc is a Microsoft Word component, which enables users to perform a wide range of Word document processing tasks directly, such as generate, read, write and modify Word document in WPF, .NET and Silverlight.

Word Image can beautify the document to attract more readers. Generally speaking, images in Word are related to contents. For example, the image will be places of interest if the document focuses on introducing one country. Sometimes, image can describe some of contents more clearly, like using chart to show data changes in a period.

Spire.Doc for .NET, a professional .NET word component to fast generate, open, modify and save Word documents without using MS Office Automation, enables users to insert image in Word and set its size according to page by using C#, VB.NET. This guide introduces an easy method how to insert image via Spire.Doc for .NET.

At first, create new Word document and add section, page for this document. Then, use p.AppendPicture(Image) method to insert image in the new created paragraph. Set height and width property for image to format its size. Download and Install Spire.Doc for .NET. Use the following code to insert image in Word by using C#, VB.NET.

Insert Word Image

[C#]
using System.Drawing;
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;

namespace WordImage
{
    class ImageinWord
    {
        static void Main(string[] args)
        {
            //Create Document
            Document document = new Document();
            Section s = document.AddSection();
            Paragraph p = s.AddParagraph();

            //Insert Image and Set Its Size
            DocPicture Pic = p.AppendPicture(Image.FromFile(@"E:\Work\Documents\SampleImage\Sample.jpg"));
            Pic.Width = 750;
            Pic.Height = 468;

            //Save and Launch
            document.SaveToFile("Image.docx", FileFormat.Docx);
            System.Diagnostics.Process.Start("Image.docx");
        }
    }
}
[VB.NET]
Imports System.Drawing
Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields

Namespace WordImage
    Friend Class ImageinWord
        Shared Sub Main(ByVal args() As String)
            'Create Document
            Dim document As New Document()
            Dim s As Section = document.AddSection()
            Dim p As Paragraph = s.AddParagraph()

            'Insert Image and Set Its Size
            Dim Pic As DocPicture = p.AppendPicture(Image.FromFile("E:\Work\Documents\SampleImage\Sample.jpg"))
            Pic.Width = 750
            Pic.Height = 468

            'Save and Launch
            document.SaveToFile("Image.docx", FileFormat.Docx)
            System.Diagnostics.Process.Start("Image.docx")
        End Sub
    End Class
End Namespace

Spire.Doc, an easy-to-use .NET Word component, enables users to fast generate, open, save and modify Word document on .NET, WPF and Silverlight applications without Word automation and any other third party add-ins.

Thursday, 16 December 2010 06:35

Edit Word Document in C#, VB.NET

In order to correct wrong spellings or add some new contents in a Word document, users need to edit an existing Word document. This guide demonstrates a solution to edit Word document in C# and VB.NET.

Spire.Doc for .NET, wonderful .NET Word component, offers a Paragraph class, which enables users to edit contents in paragraphs through set its properties. In this example, the title is updated and new text is added in paragraph two (Title is paragraph one). The editing result is shown as following screenshot.

Edit Word Document

Firstly, declare a Paragraph instance and its value is set as paragraph one (title). Set its Text property to update the original contents. Secondly, declare another Paragraph instance and its value is set as Paragraph two. Invoke Paragraph.AppendText method to add new contents for this paragraph. The overload passed to this method is string text. For distinguishing new contents and existing contents, new contents are formatted in this example. Declare a TextRange instance and set its value as new added contents. Set CharacterFormat properties for this TextRange, including FontName, FontSize and TextColor. Download and install Spire.Doc for .NET and follow the code below to edit Word document.

[C#]
using System.Drawing;
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;

namespace EidtWord
{
    class Program
    {
        static void Main(string[] args)
        {
            //Load Document
            Document document = new Document();
            document.LoadFromFile(@"E:\Work\Documents\WordDocuments\Spire.Doc for .NET.docx");

            //Update Text of Title
            Section section = document.Sections[0];
            Paragraph para1 = section.Paragraphs[0];
            para1.Text = "Spire.Doc for .NET Introduction";

            //Add New Text
            Paragraph para2 = section.Paragraphs[1];
            TextRange tr=para2.AppendText("Spire.Doc for .NET is stand-alone"
            +"to enables developers to operate Word witout Microsoft Word installed.");
            tr.CharacterFormat.FontName = "Cataneo BT";
            tr.CharacterFormat.FontSize=12;
            tr.CharacterFormat.TextColor = Color.YellowGreen;
           
            //Save and Launch
            document.SaveToFile("Edit Word.docx", FileFormat.Docx);
            System.Diagnostics.Process.Start("Edit Word.docx");
        }
    }
}
[VB.NET]
Imports System.Drawing
Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields

Namespace EidtWord
    Friend Class Program
        Shared Sub Main(ByVal args() As String)
            'Load Document
            Dim document As New Document()
            document.LoadFromFile("E:\Work\Documents\WordDocuments\Spire.Doc for .NET.docx")

            'Update Text of Title
            Dim section As Section = document.Sections(0)
            Dim para1 As Paragraph = section.Paragraphs(0)
            para1.Text = "Spire.Doc for .NET Introduction"

            'Add New Text
            Dim para2 As Paragraph = section.Paragraphs(1)
            Dim tr As TextRange = para2.AppendText("Spire.Doc for .NET is stand-alone" &
                                                   "to enables developers to operate Word witout Microsoft Word installed.")
            tr.CharacterFormat.FontName = "Cataneo BT"
            tr.CharacterFormat.FontSize = 12
            tr.CharacterFormat.TextColor = Color.YellowGreen

            'Save and Launch
            document.SaveToFile("Edit Word.docx", FileFormat.Docx)
            System.Diagnostics.Process.Start("Edit Word.docx")
        End Sub
    End Class
End Namespace

Spire.Doc, an easy-to-use component to operate Word document, allows developers to fast generate, write, edit and save Word (Word 97-2003, Word 2007, Word 2010) in C# and VB.NET for .NET, Silverlight and WPF.

Tuesday, 14 December 2010 08:33

Create, Write and Save Word in C#, VB.NET

A new created Word document can be written with contents and saved to specified path. This guide demonstrates solution to create, write and save Word in C# and VB.NET.

The basic operations of Word are to generate, write contents and save. First of all, users can create a blank Word document and then write what they want to say in this document and finally save to specified path. This guide focuses on presenting how to create, write and save Word in C# and VB.NET via Spire.Doc for .NET. The screenshot below is result after programming with following steps.

Operate Word

Create Word

Spire.Doc for .NET offers a Document class to enable developers to initialize a new Document instance. This instance is a new blank Word document.

[C#]
            //Create New Word
            Document doc = new Document();
[VB.NET]
	     'Create New Word
            Dim doc As New Document()

Write Contents in Word

Generally speaking, contents are written in a paragraph which is contained in section of document. Therefore, you need to add a new section firstly by invoking method Document.AddSection(). And add a new paragraph in new section by invoking Section.AddParagraph(). After that, you can write contents in paragraph by invoking Paragraph.AppendText(string text) method.

[C#]
            //Add Section
            Section section = doc.AddSection();
            //Add Paragraph
            Paragraph Para = section.AddParagraph();
            //Append Text
            Para.AppendText("Spire.Doc for .NET, a professional .NET Word component, "
            +"enables developers to perform a large range of tasks on Word document(from Version Word97-2003 to Word 2010) "
            +"for .NET in C# and VB.NET."
            +"This libray is specially designed for .NET developers to help them"
            +"to create any WinForm and ASP.NET Web applications to create, open, write, edit, save and convert"      
            +"Word document without Microsoft Office and any other third-party tools installed on system.");
[VB.NET]
            'Add Section
            Dim section As Section = doc.AddSection()
            'Add Paragraph
            Dim Para As Paragraph = section.AddParagraph()
            'Append Text
            Para.AppendText("Spire.Doc for .NET, a professional .NET Word component, " & "enables developers to perform a large range of tasks on Word document(from Version Word97-2003 to Word 2010) " & "for .NET in C# and Visual Basic." & "This libray is specially designed for .NET developers to help them" & "to create any WinForm and ASP.NET Web applications to create, open, write, edit, save and convert" & "Word document without Microsoft Office and any other third-party tools installed on system.")

Save Word

Invoke SaveToFile method of Document class to save the written Word. The parameter passed to this method is string fileName. If you want to set extension as .doc or .docx, you need to pass the other parameter FileFormat fileFormat to this method.

[C#]
            //Save Word
            doc.SaveToFile("OperateWord.docx", FileFormat.Docx);
[VB.NET]
            'Save Word
            doc.SaveToFile("OperateWord.docx", FileFormat.Docx)

Spire.Doc, professional Word component, is specially designed for developers to fast generate, write, modify and save Word documents in .NET, Silverlight and WPF with C# and VB.NET. Also, it supports conversion between Word and other popular formats, such as PDF, HTML, Image, Text and so on, in .NET and WPF platform.

Tuesday, 14 December 2010 07:23

Spire.Doc Program Guide Content for .NET

Spire.Doc, specially designed for developers/programmers to manipulate word proceeding tasks, from Word version 97-2003 to 2010 and 2013 in .NET, Silverlight and WPF Platform, always welcomes any kind of evaluation or test from either organizations or individuals with no charges.

This professional word component enables users to perform a large range of tasks on Word, as document operation (create, open, edit and save), mail merge, security, format (font, paragraph and page settings), objects (text, image, hyperlink, comment, table, bookmark, header/footer, footnote/endnote etc.). The conversion feature stands out of the peers, which enables developers to realize conversion between most popular formats with high fidelity, including Word to PDF, HTML, RTF, XML, Image formats, TEXT and RTF, XML and HTML files also can be converted to Word back. The following sections have been well-organized to show you how these functions work in detail.

Thursday, 09 December 2010 04:10

Solutions to Open Word in C#, VB.NET

No matter what users want to do on Word document, they should open it. This guide demonstrates several solutions to open Word in C# and VB.NET via Spire.Doc for .NET.

Open Existing Word

Spire.Doc for .NET provides a Document(String) constructor to enable users to initialize a new instance of Document class from the specified existing document.

[C#]
  Document document = new Document(@"E:\Work\Documents\Spire.Doc for .NET.docx");
[VB.NET]
Dim document As New Document("E:\Work\Documents\Spire.Doc for .NET.docx")

Spire.Doc for .NET also provides Document.LoadFromFile(String) method of Document class to open a Word document. The Word document can be .doc(Word 97-2003), .docx(Word 2007 and 2010) and .docm(Word with macro).

[C#]
  Document document = new Document();
            document.LoadFromFile(@"E:\Work\Documents\Spire.Doc for .NET.docx");
[VB.NET]
 Dim document As New Document()
            document.LoadFromFile("E:\Work\Documents\Spire.Doc for .NET.docx")
          

Open Word in Read Mode

Spire.Doc for .NET provides Document.LoadFromFileInReadMode(String, FileFormat) method of Document class to load Word in Read-Only mode.

[C#]
            Document document = new Document();
            document.LoadFromFileInReadMode(@"E:\Work\Documents\Spire.Doc for .NET.docx",FileFormat.Docx);
[VB.NET]
            Dim document As New Document()
            document.LoadFromFileInReadMode("E:\Work\Documents\Spire.Doc for .NET.docx", FileFormat.Docx)

Load Word from Stream

Spire.Doc for .NET provides the constructor Document(Stream) to initialize a new instance of Document class from specified data stream and the method Document.LoadFromStream(Stream, FileFormat) to open document from Stream in XML or Microsoft Word document.

[C#]
            Stream stream = File.OpenRead(@"E:\Work\Documents\Spire.Doc for .NET.docx");
            Document document = new Document(stream);
OR
            Stream stream = File.OpenRead(@"E:\Work\Documents\Spire.Doc for .NET.docx"); 
            Document document = new Document();
            document.LoadFromStream(stream, FileFormat.Docx);
[VB.NET]
            Dim stream As Stream = File.OpenRead("E:\Work\Documents\Spire.Doc for .NET.docx")
            Dim document As New Document(stream)
OR
            Dim stream As Stream = File.OpenRead("E:\Work\Documents\Spire.Doc for .NET.docx")
            Dim document As New Document()
            document.LoadFromStream(stream, FileFormat.Docx)

Spire.Doc, an easy-to-use component to operate Word document, allows developers to fast generate, write, edit and save Word (Word 97-2003, Word 2007, Word 2010) in C# and VB.NET for .NET, Silverlight and WPF.

Saturday, 04 December 2010 10:35

Licensing

Each product of e-iceblue provides a trial version, every registered user can download them from our site for free. The trial version product will add an extra sheet (in Spire.XLS) or paragraph (in Spire.Doc) with the Evaluation Warning to the result file. From Spire.Doc v3.6.0/Spire.XLS v5.8.0/Spire.Office 1.4.0, We deprecated the old username-key registeration method and use a new license file to instead. When you purchase a license, you will get a license file from us. After you apply it, the Evaluation Warning will disappear.

This section will show you what is the license file and how to apply the license file. It includes following topics:

License File Introduction

The license file is an XML format file that contains details such as the username&email&organization of the purchaser, licensing date, product name, product version, the number of licensed developer, the number of licensed site and so on. The license file is digitally signed, so do not modify it anyway.

You need to apply it before performing any operations with our products, but it's only required once to apply the license file in an application or process.

How to Apply the License File

Performing any operation with our products will lead the license module to check whether the license has been loaded. If not, the license module will try to load it. The license can be loaded implicitly or explicitly from a file, stream or an embedded resource, implicit is default.

Note: Whether implicity or explicity, you must apply the license file before you call any of our products.

Implicit Loading

In this mode, the license module will try to search the license file in the following locations:

  • The folder that contains the entry assembly (your assembly named .exe) in runtime.
  • An embedded resource in the assembly that calls our product.
  • The folder that contains the assembly of our product (for example: Spire.Doc.dll, Spire.XLS.dll) referenced by your assembly in runtime.
  • The folder that contains the assembly that calls our product in runtime.

When you get the license file from us, the default name of it is license.elic.xml. You can put it in any location aforementioned. The license module will load it automatically in your application. You can also change the license file name. If you do that, it's required to tell the license module the new file name before you perform any operation with our products, for example:

[C#]
//Tell the license module that you changed the license file name.
Spire.License.LicenseProvider.SetLicenseFileName("your-license-file-name");
[VB.NET]
//Tell the license module that you changed the license file name.
Spire.License.LicenseProvider.SetLicenseFileName("your-license-file-name");

Note: The class Spire.License.LicenseProvider is defined in Spire.License.dll, which is installed to the same directory as Spire.Doc.dll/Spire.XLS.dll. It's required to reference Spire.License.dll in your project if you use the class Spire.License.LicenseProvider in your code.

You can also get the license file name by which the license module search the license, for example:

[C#]
//To get the default license file name.
String fileName = Spire.License.LicenseProvider.GetLicenseFileName();
[VB.NET]
//To get the default license file name.
Dim fileName As String = Spire.License.LicenseProvider.GetLicenseFileName()

Explicit Loading

In this mode, the license module will try to load the license from a specified file or stream you provide.

Explicitly specify the license file by a full file name.

[C#]
//Specify the license file by a full file name.
Spire.License.LicenseProvider.SetLicenseFileFullPath(@"D:\myApp\license.lic");
[VB.NET]
//Specify the license file by a full file name.
Spire.License.LicenseProvider.SetLicenseFileFullPath("D:\myApp\license.lic")

Explicitly specify the license file by a FileInfo object.

[C#]
//Specify the license file by a FileInfo object.
FileInfo licenseFile = new FileInfo(@"D:\myApp\license.lic");
Spire.License.LicenseProvider.SetLicenseFile(licenseFile);
[VB.NET]
//Specify the license file by a FileInfo object.
Dim licenseFile As New FileInfo("D:\myApp\license.lic")
Spire.License.LicenseProvider.SetLicenseFile(licenseFile)

Provide a license data stream.

[C#]
//Specify the license by a license data stream.
Stream stream = File.OpenRead(@"D:\myApp\license.lic");
Spire.License.LicenseProvider.SetLicenseFileStream(stream);
[VB.NET]
//Specify the license by a license data stream.
Dim stream As Stream = File.OpenRead("D:\myApp\license.lic")
Spire.License.LicenseProvider.SetLicenseFileStream(stream)

See also: How to Apply the License by license key

How to Include the License File as an Embedded Resource

Including the license file as an embedded resource into one of the assemblies that calls our products is a good idea. It will make your release and deployment become easier. You don't need to worry about the loss of it any longer. To include the license file as an embedded resource in Visual Studio, perform the following steps:

  • In the Solution Explorer, right-click your project and click Add | Add Existing Item... menu.
  • Find your license file in the opend file browser dialog, then click the Add button to add it into your project.
  • Select the file in the Solution Explorer and set Build Action to Embedded Resource in the Properties window.
  • If your license file name is not the default file name license.elic.xml, invoke Spire.License.LicenseProvider.SetLicenseFileName to tell the real name to the license module in your code.

Embedded License

See also: How to Apply the License by license key

How to Apply the License File in a Web Site

If you want to apply the license file in a web site, just copy it into the folder Bin which contains the referenced assemblies of your web site.

Copy License

See also: How to Apply the License by license key

How to Apply the License in Silverlight

SeeHow to Apply the License by license key

How to Apply the License by license key

Sometimes, your application could not read the license file because of lack of permission or other reason. In this case, you can invoke the method Spire.License.LicenseProvider.SetLicenseKey(String key) to apply your license. The parameter key is the value of the Key attribute of the element License of your license xml file. To make sure that apply the license before any operation with our products, we recommend invoking this method in the top of your entry method.

[C#]
//Register the license key.
Spire.License.LicenseProvider.SetLicenseKey("your license key");
[VB.NET]
'Register the license key.
Spire.License.LicenseProvider.SetLicenseKey("your license key")
  • If your application is WinForm Application or Console Application, this code above should be added into the Main method.
  • If your application is Web Application, you need to add Global.asax into your project and add this method code above into the Application_Start method.
  • If your application is Silverlight, this code above should be added into the App.Application_Startup method. Here we suppose that the class App is SilverlightAppEntry.

How to Apply two licenses or more

Sometimes, you need to apply two licenses or more in your application. In this case, there are two methods you can use.

If you apply your 2 licenses or more by license key, you can invoke the following method in the top of your entry method.

[C#]
Spire.License.LicenseProvider.SetLicenseKey("license key of license1");
Spire.License.LicenseProvider.LoadLicense();  
Spire.License.LicenseProvider.SetLicenseKey("license key of license2");  
Spire.License.LicenseProvider.LoadLicense();

If you apply them by license file, you can invoke the following method:

[C#]
Spire.License.LicenseProvider.SetLicenseFileName("license1.elic.xml");  
Spire.License.LicenseProvider.LoadLicense();  
Spire.License.LicenseProvider.SetLicenseFileName("license2.elic.xml");  
Spire.License.LicenseProvider.LoadLicense();

Note: The class Spire.License.LicenseProvider is defined in Spire.License.dll, which is installed to the same directory as Spire.Doc.dll/Spire.XLS.dll. It's required to reference Spire.License.dll in your project if you use the class Spire.License.LicenseProvider in your code.