以下是使用 OpenXML 插件将 Word 文档转换为图片的步骤:

  1. 添加 OpenXML 插件包

在项目中添加 OpenXML 插件包,可以通过 NuGet 包管理器搜索 OpenXML 即可。

  1. 导入命名空间
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
using System.Drawing.Imaging;
using System.IO;
  1. 创建 Word 文档对象

使用 DocumentFormat.OpenXml.Packaging.WordprocessingDocument 类创建一个 Word 文档对象。

using (WordprocessingDocument wordDocument = WordprocessingDocument.Open(wordFilePath, true))
{
    // code
}
  1. 获取文档中的所有图片

使用 DocumentFormat.OpenXml.Wordprocessing.Drawing 类获取 Word 文档中的所有图片。

IEnumerable<Drawing> drawings = wordDocument.MainDocumentPart.Document.Descendants<Drawing>();
  1. 将图片转换为位图并保存

使用 System.Drawing.Bitmap 类将图片转换为位图,并使用 System.Drawing.Imaging.ImageFormat 类指定图片格式,最后使用 System.IO.File 类将图片保存到指定路径。

foreach (Drawing drawing in drawings)
{
    string imagePath = drawing.Inline.Graphic.GraphicData.Descendants<Pictures.Picture>().FirstOrDefault()?.BlipFill.Blip.Embed.Value;
    if (!string.IsNullOrEmpty(imagePath))
    {
        ImagePart imagePart = (ImagePart)wordDocument.MainDocumentPart.GetPartById(imagePath);
        using (Stream stream = imagePart.GetStream())
        {
            Bitmap bitmap = new Bitmap(stream);
            string imageName = Path.GetFileNameWithoutExtension(wordFilePath) + "_" + ++imageIndex + ".png";
            string imagePath = Path.Combine(imageFolderPath, imageName);
            bitmap.Save(imagePath, ImageFormat.Png);
        }
    }
}

完整代码示例:

using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string wordFilePath = "C:\Users\Administrator\Desktop\Test.docx";
            string imageFolderPath = "C:\Users\Administrator\Desktop\Images";
            int imageIndex = 0;
            if (!Directory.Exists(imageFolderPath))
            {
                Directory.CreateDirectory(imageFolderPath);
            }
            using (WordprocessingDocument wordDocument = WordprocessingDocument.Open(wordFilePath, true))
            {
                IEnumerable<Drawing> drawings = wordDocument.MainDocumentPart.Document.Descendants<Drawing>();
                foreach (Drawing drawing in drawings)
                {
                    string imagePath = drawing.Inline.Graphic.GraphicData.Descendants<Pictures.Picture>().FirstOrDefault()?.BlipFill.Blip.Embed.Value;
                    if (!string.IsNullOrEmpty(imagePath))
                    {
                        ImagePart imagePart = (ImagePart)wordDocument.MainDocumentPart.GetPartById(imagePath);
                        using (Stream stream = imagePart.GetStream())
                        {
                            Bitmap bitmap = new Bitmap(stream);
                            string imageName = Path.GetFileNameWithoutExtension(wordFilePath) + "_" + ++imageIndex + ".png";
                            string imagePath = Path.Combine(imageFolderPath, imageName);
                            bitmap.Save(imagePath, ImageFormat.Png);
                        }
                    }
                }
            }
        }
    }
}
Net Core 使用 OpenXML 插件将 Word 文档转换为图片

原文地址: https://www.cveoy.top/t/topic/olDS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录