html生成wrod文档,并智能生成目录
注意:首页网页标签不要有h1等标签,不然会生成目录
使用的是Aspose.Words,用19.10.0.0
破解
new Aspose.Words.License().SetLicense(new MemoryStream(Convert.FromBase64String("PExpY2Vuc2U+CiAgPERhdGE+CiAgICA8TGljZW5zZWRUbz5TdXpob3UgQXVuYm94IFNvZnR3YXJlIENvLiwgTHRkLjwvTGljZW5zZWRUbz4KICAgIDxFbWFpbFRvPnNhbGVzQGF1bnRlYy5jb208L0VtYWlsVG8+CiAgICA8TGljZW5zZVR5cGU+RGV2ZWxvcGVyIE9FTTwvTGljZW5zZVR5cGU+CiAgICA8TGljZW5zZU5vdGU+TGltaXRlZCB0byAxIGRldmVsb3BlciwgdW5saW1pdGVkIHBoeXNpY2FsIGxvY2F0aW9uczwvTGljZW5zZU5vdGU+CiAgICA8T3JkZXJJRD4yMDA2MDIwMTI2MzM8L09yZGVySUQ+CiAgICA8VXNlcklEPjEzNDk3NjAwNjwvVXNlcklEPgogICAgPE9FTT5UaGlzIGlzIGEgcmVkaXN0cmlidXRhYmxlIGxpY2Vuc2U8L09FTT4KICAgIDxQcm9kdWN0cz4KICAgICAgPFByb2R1Y3Q+QXNwb3NlLlRvdGFsIGZvciAuTkVUPC9Qcm9kdWN0PgogICAgPC9Qcm9kdWN0cz4KICAgIDxFZGl0aW9uVHlwZT5FbnRlcnByaXNlPC9FZGl0aW9uVHlwZT4KICAgIDxTZXJpYWxOdW1iZXI+OTM2ZTVmZDEtODY2Mi00YWJmLTk1YmQtYzhkYzBmNTNhZmE2PC9TZXJpYWxOdW1iZXI+CiAgICA8U3Vic2NyaXB0aW9uRXhwaXJ5PjIwMjEwODI3PC9TdWJzY3JpcHRpb25FeHBpcnk+CiAgICA8TGljZW5zZVZlcnNpb24+My4wPC9MaWNlbnNlVmVyc2lvbj4KICAgIDxMaWNlbnNlSW5zdHJ1Y3Rpb25zPmh0dHBzOi8vcHVyY2hhc2UuYXNwb3NlLmNvbS9wb2xpY2llcy91c2UtbGljZW5zZTwvTGljZW5zZUluc3RydWN0aW9ucz4KICA8L0RhdGE+CiAgPFNpZ25hdHVyZT5wSkpjQndRdnYxV1NxZ1kyOHFJYUFKSysvTFFVWWRrQ2x5THE2RUNLU0xDQ3dMNkEwMkJFTnh5L3JzQ1V3UExXbjV2bTl0TDRQRXE1aFAzY2s0WnhEejFiK1JIWTBuQkh1SEhBY01TL1BSeEJES0NGbWg1QVFZRTlrT0FxSzM5NVBSWmJRSGowOUNGTElVUzBMdnRmVkp5cUhjblJvU3dPQnVqT1oyeDc4WFE9PC9TaWduYXR1cmU+CjwvTGljZW5zZT4=")));
生成word
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.InsertHtml(temHtml);
if (isCatalogue)
{
NodeCollection paragraphs = doc.GetChildNodes(NodeType.Paragraph, true);
foreach (Paragraph paragraph in paragraphs)
{
if (paragraph.ToString(SaveFormat.Text).Contains("目录"))
{
// 在找到的段落后面插入目录
builder.MoveTo(paragraph);
builder.InsertParagraph();
builder.InsertTableOfContents("\\o \"1-4\" \\h \\z");
break;
}
}
// 更新目录
doc.UpdateFields();
// 访问文档的样式集合
StyleCollection styles = doc.Styles;
// 修改与目录条目关联的样式的字体颜色为黑色
foreach (Style style in styles)
{
if (style.Name.StartsWith("Hyperlink"))
{
// 修改字体颜色为黑色
style.Font.Color = Color.Black;
}
}
//菜单下添加新页
foreach (Paragraph paragraph in paragraphs)
{
if (paragraph.ToString(SaveFormat.Text).Contains("政策快车线下服务"))
{
builder.MoveTo(paragraph);
builder.InsertBreak(BreakType.SectionBreakNewPage);
break;
}
}
}
MemoryStream outStream = new MemoryStream();
doc.Save(outStream, SaveFormat.Docx);
return outStream.ToArray();
return outStream.ToArray();
使用的是cshtml模板生成html数据(RazorEngine.3.10.0)
public class RazorRenderer { public static string RenderModel(string template, object model) { if (string.IsNullOrEmpty(template)) return string.Empty; return Engine.Razor.RunCompile(template, Guid.NewGuid().ToString(), modelType: model.GetType(), model: model); } public static string Render(string template, object model) { if (string.IsNullOrEmpty(template)) return string.Empty; return Engine.Razor.RunCompile(template, Guid.NewGuid().ToString(), null, model); } public static string GetTemplate(string templateName) { string name = templateName; if (!name.Contains(",")) name += ".txt"; string templatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "template", name); if (File.Exists(templatePath)) { using (FileStream fsRead = new FileStream(templatePath, FileMode.Open)) { int fsLen = (int)fsRead.Length; byte[] heByte = new byte[fsLen]; int r = fsRead.Read(heByte, 0, heByte.Length); return System.Text.Encoding.UTF8.GetString(heByte); } } return string.Empty; } }
重点来了,目录颜色是蓝色超链接,改样式
// 访问文档的样式集合 StyleCollection styles = doc.Styles; // 修改与目录条目关联的样式的字体颜色为黑色 foreach (Style style in styles) { if (style.Name.StartsWith("Hyperlink")) { // 修改字体颜色为黑色 style.Font.Color = Color.Black; } }
按目录切换到下一页,添加html
<br style="page-break-before:always; clear:both; mso-break-type:section-break">

浙公网安备 33010602011771号