使用 OpenXML 将 Word 文档转换为图像 - .NET Core 示例
您可以使用以下步骤将 Word 文档转换为图像:
-
安装 OpenXML SDK:请下载和安装 OpenXML SDK。这将提供必要的库和工具来处理 Word 文档。
-
添加引用:在 Visual Studio 中,通过右键单击项目并选择“添加引用”来添加以下引用:
- DocumentFormat.OpenXml
- DocumentFormat.OpenXml.Drawing
- DocumentFormat.OpenXml.Packaging
- DocumentFormat.OpenXml.Wordprocessing
-
打开 Word 文档:使用 OpenXML SDK 中的 DocumentFormat.OpenXml.Packaging 命名空间中的 WordprocessingDocument 类打开 Word 文档。
-
将文档转换为图像:使用 DocumentFormat.OpenXml.Drawing.Wordprocessing 命名空间中的 DrawingToImageConverter 类将每个文本框转换为图像。
-
保存图像:将图像保存到磁盘或将其加载到图像控件中显示。
以下是一个示例代码:
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Drawing;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
public static void ConvertWordToImage(string wordFilePath, string imageFolderPath)
{
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(wordFilePath, false))
{
int pageNumber = 1;
foreach (var page in wordDoc.MainDocumentPart.Document.Body.Elements<DocumentFormat.OpenXml.Wordprocessing.Paragraph>().Where(p => p.InnerText.Contains('PAGE')))
{
// 获取当前页面的图像部分
string imagePath = Path.Combine(imageFolderPath, $'Page{pageNumber}.png');
var drawing = page.Descendants<DocumentFormat.OpenXml.Drawing.Wordprocessing.Drawing>().FirstOrDefault();
if (drawing != null)
{
var graphic = drawing.Descendants<DocumentFormat.OpenXml.Drawing.Graphic>().FirstOrDefault();
if (graphic != null)
{
var graphicData = graphic.Descendants<DocumentFormat.OpenXml.Drawing.GraphicData>().FirstOrDefault();
if (graphicData != null && graphicData.Uri.Value.EndsWith('.emf'))
{
var emfImagePart = wordDoc.MainDocumentPart.GetPartById(graphicData.Uri.Value.Substring(1)) as ImagePart;
if (emfImagePart != null)
{
// 将 EMF 转换为 PNG
using (var stream = emfImagePart.GetStream())
{
using (var emf = new Metafile(stream))
{
using (var png = new Bitmap(emf.Width, emf.Height))
{
using (var g = Graphics.FromImage(png))
{
g.DrawImage(emf, 0, 0);
}
png.Save(imagePath, ImageFormat.Png);
}
}
}
}
}
}
}
pageNumber++;
}
}
}
在此示例中,我们将 Word 文档中每个包含 'PAGE' 文本的段落转换为图像。首先,我们查找包含图形的段落,然后获取图形数据和图像部分。如果图像部分是 EMF 格式,则将其转换为 PNG 格式并保存到指定的文件夹中。最后,我们遍历文档中的所有页面并重复此过程。
原文地址: https://www.cveoy.top/t/topic/olDt 著作权归作者所有。请勿转载和采集!