天天看點

C# / VB.NET 在Word中嵌入多媒體(視訊、音頻)檔案

Word中可将Office(Word/Excel/PowerPoint)、PDF、txt等檔案作為OLE對象插入到文檔中,輕按兩下該對象可直接通路或編輯該檔案,除了以上常見的檔案格式對象,也可以插入多媒體檔案,如視訊、音頻等。本篇文章将對此作相關介紹。

引入dll

1.通過NuGet安裝dll(2種方法)

  1.1可以在Visual Studio中打開“解決方案資料總管”,滑鼠右鍵點選“引用”,“管理NuGet包”,然後搜尋Free Spire.Doc安裝。

  1.2将以下内容複制到PM控制台安裝。

Install-Package FreeSpire.Doc -Version 9.9.7

2.手動添加dll引用

可通過手動下載下傳包,然後解壓,找到BIN檔案夾下的Spire.Doc.dll。在Visual Studio中打開“解決方案資料總管”,滑鼠右鍵點選“引用”,“添加引用”将本地路徑BIN檔案夾下的dll檔案添加引用至程式。

嵌入多媒體檔案

代碼中嵌入多媒體檔案的方法是通過調用AppendOleObject(Stream oleStream, DocPicture olePicture, string fileExtension)方法來實作,該方法中的三個參數解釋分别為:

  •  oleStream: OLE檔案流
  •  olePicture: 用于顯示OLE對象的圖像(圖示)
  •  fileExtension: 嵌入的檔案對象擴充名(如:mp3、mp4、avi等)

主要代碼步驟解析:

1. 初始化Document類的一個新執行個體并添加一個新的節。

2. 添加段落,調用Paragraph.AppendOleObject()方法将多媒體檔案作為OLE對象嵌入到段落。

3. 通過Document.SaveToFile(string fileName, FileFormat fileFormat)儲存文檔到指定路徑。

C#

using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Drawing;
using System.IO;

namespace EmbedMediaFile
{
    class Program
    {
        static void Main(string[] args)
        {
            //執行個體化Document類的對象,并添加Section
            Document doc = new Document();
            Section section = doc.AddSection();

            //定義段落樣式
            ParagraphStyle style1 = new ParagraphStyle(doc);
            style1.Name = "Style";
            style1.CharacterFormat.FontName = "Calibri";
            style1.CharacterFormat.FontSize = 18;
            style1.CharacterFormat.Bold = true;
            style1.CharacterFormat.TextColor = Color.BlueViolet;
            doc.Styles.Add(style1);

            //添加段落1,嵌入視訊檔案
            Paragraph para1 = section.AddParagraph();
            para1.AppendText("嵌入視訊檔案:");           
            para1.ApplyStyle(style1.Name);
            Stream s1 = File.OpenRead("Video.mp4");
            DocPicture pic1 = new DocPicture(doc);
            pic1.LoadImage(Image.FromFile("logo1.png"));
            para1.AppendOleObject(s1, pic1, "mp4");

            //添加一個空白段落2
            Paragraph para2 = section.AddParagraph();

            //添加段落3,嵌入音頻檔案
            Paragraph para3 = section.AddParagraph();
            para3.AppendText("嵌入音頻檔案:");
            para3.ApplyStyle(style1.Name);
            Stream s2 = File.OpenRead("Audio.mp3");
            DocPicture pic2 = new DocPicture(doc);
            pic2.LoadImage(Image.FromFile("logo2.png"));
            para3.AppendOleObject(s2, pic2, "mp3");

            //儲存文檔
            doc.SaveToFile("Result.docx", FileFormat.Docx2013);
        }
    }
}      

VB.NET

Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields
Imports System.Drawing
Imports System.IO

Namespace EmbedMediaFile
    Class Program
        Private Shared Sub Main(args As String())
            '執行個體化Document類的對象,并添加Section
            Dim doc As New Document()
            Dim section As Section = doc.AddSection()

            '定義段落樣式
            Dim style1 As New ParagraphStyle(doc)
            style1.Name = "Style"
            style1.CharacterFormat.FontName = "Calibri"
            style1.CharacterFormat.FontSize = 18
            style1.CharacterFormat.Bold = True
            style1.CharacterFormat.TextColor = Color.BlueViolet
            doc.Styles.Add(style1)

            '添加段落1,嵌入視訊檔案
            Dim para1 As Paragraph = section.AddParagraph()
            para1.AppendText("嵌入視訊檔案:")
            para1.ApplyStyle(style1.Name)
            Dim s1 As Stream = File.OpenRead("Video.mp4")
            Dim pic1 As New DocPicture(doc)
            pic1.LoadImage(Image.FromFile("logo1.png"))
            para1.AppendOleObject(s1, pic1, "mp4")

            '添加一個空白段落2
            Dim para2 As Paragraph = section.AddParagraph()

            '添加段落3,嵌入音頻檔案
            Dim para3 As Paragraph = section.AddParagraph()
            para3.AppendText("嵌入音頻檔案:")
            para3.ApplyStyle(style1.Name)
            Dim s2 As Stream = File.OpenRead("Audio.mp3")
            Dim pic2 As New DocPicture(doc)
            pic2.LoadImage(Image.FromFile("logo2.png"))
            para3.AppendOleObject(s2, pic2, "mp3")

            '儲存文檔
            doc.SaveToFile("Result.docx", FileFormat.Docx2013)
        End Sub
    End Class
End Namespace      

嵌入後的文檔效果:

C# / VB.NET 在Word中嵌入多媒體(視訊、音頻)檔案

注意事項

  • 代碼中的所有檔案路徑均為的VS程式的Debug路徑,如:F:\VS2017Project\InsertOLE_Doc\EmbedMediaFile\bin\Debug\Result.docx,檔案路徑可自定義為其他路徑。
  • 以上代碼程式中引入的是免費Word庫 Free Spire.Doc for .NET版本中的dll。

 —End—

繼續閱讀