学习C#调用OpenXml操作word文档的基本用法(11:操作文档缩略图)

  Openxml中WordprocessingDocument类的ThumbnailPart属性用于保存文档缩略图,其类型为ThumbnailPart,支持添加和读取缩略图。
  通常Word文档没有缩略图。在文件夹中以平铺、内容或各类尺寸图标形式查看Word文档时,显示的是Word软件的默认图标。ThumbnailPart类支持调用FeedData函数添加Jpg、Emf、Wmf格式的图片作为文档缩略图。下面示例代码将七龙珠图片添加为缩略图,运行效果如下图所示:

csharp 复制代码
string jpgPath = @"...\dragonball.jpg";
using (WordprocessingDocument document = WordprocessingDocument.Open(txtFilePath.Text, true))
{
    ThumbnailPart tPart = document.ThumbnailPart;
    if(tPart == null)
    {
        tPart = document.AddThumbnailPart(ThumbnailPartType.Jpeg);
    }

    using (FileStream newThumbnailStream = new FileStream(jpgPath, FileMode.Open))
    {
        tPart.FeedData(newThumbnailStream);
    }
}


  如果Word文档包含缩略图,则ThumbnailPart类的ContentType属性保存图片格式,如"image/jpeg",通过调用GetStream函数获取图片数据流,然后可以将图片保存到本地。示例代码及运行效果如下图所示:

csharp 复制代码
string jpgPath = @"thumbnailPart.jpg";
using (WordprocessingDocument document = WordprocessingDocument.Open(txtFilePath.Text, false))
{
    ThumbnailPart tPart = document.ThumbnailPart;
    if (tPart == null)
    {
        MessageBox.Show("Word文档不包含缩略图");
        return;
    }

    using (Stream thumbnailStream = tPart.GetStream())
    {
        using (FileStream fileStream = new FileStream(jpgPath,
               FileMode.Create))
        {
            thumbnailStream.CopyTo(fileStream);
        }
    }
}

参考文献

1https://github.com/dotnet/Open-XML-SDK

2https://learn.microsoft.com/zh-cn/office/open-xml/open-xml-sdk

3https://learn.microsoft.com/zh-cn/dotnet/api/documentformat.openxml.wordprocessing.style?view=openxml-3.0.1

4https://blog.csdn.net/i042416/article/details/126228816

相关推荐
ComPDFKit1 天前
PDF转Word后,每行都成一段?先分清断段、文本框和扫描页
pdf·word
thethefighter1 天前
快速预览Word、WPS秒开,支持空格弹窗
linux·word·wps·快速预览·空格弹窗·nhdeepview
SunnyDays10111 天前
Java 操作 Word 脚注和尾注:添加、读取与删除
java·word
SunnyDays10111 天前
Java 为 Word 添加页码:隐藏封面页码、从指定页开始编号、奇偶页页码设置等
java·word·页码
Eiceblue1 天前
用 Python 给 Word 文档加水印:文字、图片与批量处理
开发语言·vscode·python·word
Metaphor6922 天前
使用 Python 在 Word 文档中添加、修改和删除变量
python·word
Monte05392 天前
word 如何让mathtype公式居中,公式编号右对齐
word
2501_930707782 天前
如何使用C#代码替换 Word 文档中的文本
word
Metaphor6923 天前
轻松使用 Python 将 RTF 转换为 Word(含批量转换与格式互转)
python·word·rtf
IHaveADiscovery3 天前
AI代劳Word表格线条:先搞懂术语再动手
人工智能·word