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号