NetCore的word转html很少见,特别是带图片转换为html的
查了很多资料做了些尝试
DocX 免费的不支持NetCore了
后来在nuget上查找发现DotNetCore.NPOI可以引用(后来发现NPOI其实就可以了)
然后就开始尝试
获取图片有点坑 踩了好大一会 找了好久才找到对应关系 然后就是 两张一样的图片只会显示一张
github地址如下 如果有帮助 麻烦帮忙Star一下谢谢
https://github.com/ToolsByXLG/NPOI.Word2Html
首先nuget引用 NPOI
Install-Package NPOI
理论上如果不是netcore的话 直接引用NPOI就好
可能不太完善 可以稍微改进下
反正可以正常在centos上word转成html了
FileStream stream = new FileStream("1.docx", FileMode.Open,FileAccess.Read);
更新了代码,现在我项目中就是用的这个类,上传阿里云部分自己改改
using NPOI.OpenXmlFormats.Wordprocessing;
using NPOI.XWPF.UserModel;
public class NpoiDocHelper
{
private readonly IBinaryObjectManager _binaryObjectManager;
public NpoiDocHelper(IBinaryObjectManager binaryObjectManager)
{
_binaryObjectManager = binaryObjectManager;
}
/// <summary>
/// Npoi处理Doc
/// </summary>
/// <param name="stream"></param>
/// <param name="isImgUploadAliYun"></param>
/// <returns></returns>
public async Task<string> NpoiDoc(Stream stream, bool isImgUploadAliYun = false)
{
var myDocx = new XWPFDocument(stream); //打开07(.docx)以上的版本的文档
var picInfoList = await PicturesHandleAsync(myDocx, isImgUploadAliYun);
var sb = new StringBuilder();
foreach (var para in myDocx.BodyElements)
switch (para.ElementType)
{
case BodyElementType.PARAGRAPH:
{
var paragraph = (XWPFParagraph) para;
sb.Append(ParaGraphHandle(paragraph, picInfoList));
break;
}
case BodyElementType.TABLE:
var paraTable = (XWPFTable) para;
sb.Append(TableHandle(paraTable, picInfoList));
break;
}
return sb.Replace(" style=''", "").ToString();
}