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

iceblue發表於2021-12-07

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

 

嵌入後的文件效果:

 

注意事項

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

 

 —End—

 

相關文章