Net Core 使用 OpenXML 插件将 Word 文档转换为图片
以下是使用 OpenXML 插件将 Word 文档转换为图片的步骤:
- 添加 OpenXML 插件包
在项目中添加 OpenXML 插件包,可以通过 NuGet 包管理器搜索 OpenXML 即可。
- 导入命名空间
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
using System.Drawing.Imaging;
using System.IO;
- 创建 Word 文档对象
使用 DocumentFormat.OpenXml.Packaging.WordprocessingDocument 类创建一个 Word 文档对象。
using (WordprocessingDocument wordDocument = WordprocessingDocument.Open(wordFilePath, true))
{
// code
}
- 获取文档中的所有图片
使用 DocumentFormat.OpenXml.Wordprocessing.Drawing 类获取 Word 文档中的所有图片。
IEnumerable<Drawing> drawings = wordDocument.MainDocumentPart.Document.Descendants<Drawing>();
- 将图片转换为位图并保存
使用 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);
}
}
}
}
}
}
}
原文地址: https://www.cveoy.top/t/topic/olDS 著作权归作者所有。请勿转载和采集!