94 lines
5.0 KiB
C#
94 lines
5.0 KiB
C#
using Aspose.Words;
|
|
using Aspose.Words.Fields;
|
|
using Aspose.Words.Layout;
|
|
using Aspose.Words.Loading;
|
|
using Aspose.Words.Tables;
|
|
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Net.Http;
|
|
using System.Text;
|
|
using System.Text.RegularExpressions;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace LearnWordManage
|
|
{
|
|
public static class AsposeWordManage
|
|
{
|
|
static AsposeWordManage()
|
|
{
|
|
////使用注册码
|
|
//new Aspose.Words.License().SetLicense(new MemoryStream(Convert.FromBase64String(
|
|
// "PExpY2Vuc2U+CiAgPERhdGE+CiAgICA8TGljZW5zZWRUbz5TdXpob3UgQXVuYm94IFNvZnR3YXJlIENvLiwgTHRkLjwvTGl" +
|
|
// "jZW5zZWRUbz4KICAgIDxFbWFpbFRvPnNhbGVzQGF1bnRlYy5jb208L0VtYWlsVG8+CiAgICA8TGljZW5zZVR5cGU+RGV2ZW" +
|
|
// "xvcGVyIE9FTTwvTGljZW5zZVR5cGU+CiAgICA8TGljZW5zZU5vdGU+TGltaXRlZCB0byAxIGRldmVsb3BlciwgdW5saW1pd" +
|
|
// "GVkIHBoeXNpY2FsIGxvY2F0aW9uczwvTGljZW5zZU5vdGU+CiAgICA8T3JkZXJJRD4yMDA2MDIwMTI2MzM8L09yZGVySUQ+" +
|
|
// "CiAgICA8VXNlcklEPjEzNDk3NjAwNjwvVXNlcklEPgogICAgPE9FTT5UaGlzIGlzIGEgcmVkaXN0cmlidXRhYmxlIGxpY2V" +
|
|
// "uc2U8L09FTT4KICAgIDxQcm9kdWN0cz4KICAgICAgPFByb2R1Y3Q+QXNwb3NlLlRvdGFsIGZvciAuTkVUPC9Qcm9kdWN0Pg" +
|
|
// "ogICAgPC9Qcm9kdWN0cz4KICAgIDxFZGl0aW9uVHlwZT5FbnRlcnByaXNlPC9FZGl0aW9uVHlwZT4KICAgIDxTZXJpYWxOd" +
|
|
// "W1iZXI+OTM2ZTVmZDEtODY2Mi00YWJmLTk1YmQtYzhkYzBmNTNhZmE2PC9TZXJpYWxOdW1iZXI+CiAgICA8U3Vic2NyaXB0" +
|
|
// "aW9uRXhwaXJ5PjIwMjEwODI3PC9TdWJzY3JpcHRpb25FeHBpcnk+CiAgICA8TGljZW5zZVZlcnNpb24+My4wPC9MaWNlbnN" +
|
|
// "lVmVyc2lvbj4KICAgIDxMaWNlbnNlSW5zdHJ1Y3Rpb25zPmh0dHBzOi8vcHVyY2hhc2UuYXNwb3NlLmNvbS9wb2xpY2llcy" +
|
|
// "91c2UtbGljZW5zZTwvTGljZW5zZUluc3RydWN0aW9ucz4KICA8L0RhdGE+CiAgPFNpZ25hdHVyZT5wSkpjQndRdnYxV1NxZ" +
|
|
// "1kyOHFJYUFKSysvTFFVWWRrQ2x5THE2RUNLU0xDQ3dMNkEwMkJFTnh5L3JzQ1V3UExXbjV2bTl0TDRQRXE1aFAzY2s0WnhE" +
|
|
// "ejFiK1JIWTBuQkh1SEhBY01TL1BSeEJES0NGbWg1QVFZRTlrT0FxSzM5NVBSWmJRSGowOUNGTElVUzBMdnRmVkp5cUhjblJ" +
|
|
// "vU3dPQnVqT1oyeDc4WFE9PC9TaWduYXR1cmU+CjwvTGljZW5zZT4=")));
|
|
}
|
|
|
|
public static byte[] HtmlToPageWord(string htmlBody, string headerName="")
|
|
{
|
|
//Document doc = new Document();
|
|
//DocumentBuilder builder = new DocumentBuilder(doc);
|
|
//var html = $"<html><body>{htmlBody}</body></html>";//这是html文本
|
|
//// 替换图片svg为png
|
|
//builder.InsertHtml(newHtml);
|
|
HtmlLoadOptions loadOptions = new HtmlLoadOptions { ConvertSvgToEmf =false, PreferredControlType = HtmlControlType.StructuredDocumentTag };
|
|
var html =$"<!DOCTYPE html><html lang=\"zh\"><head> <meta charset=\"UTF-8\"> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"> <title>{headerName}</title></head><body>{htmlBody}</body></html>";
|
|
using var mStream = new MemoryStream(Encoding.UTF8.GetBytes(html));
|
|
var doc = new Document(mStream, loadOptions);
|
|
//设置页眉
|
|
if (!string.IsNullOrEmpty(headerName))
|
|
{
|
|
DocumentBuilder builder = new DocumentBuilder(doc);
|
|
// 设置页面第一页和其它页显示不同
|
|
doc.FirstSection.PageSetup.DifferentFirstPageHeaderFooter = true;
|
|
// 移动到新 Section 的页眉位置开始插入页眉内容。
|
|
builder.MoveToHeaderFooter(HeaderFooterType.HeaderFirst);
|
|
builder.MoveToHeaderFooter(HeaderFooterType.HeaderPrimary);
|
|
builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
|
|
builder.Font.Name = "宋体";
|
|
builder.Font.Size = 12;
|
|
builder.Font.Color = Color.Gray;
|
|
builder.Write($"{headerName}");
|
|
|
|
// 设置第一页页码页数
|
|
builder.MoveToHeaderFooter(HeaderFooterType.FooterFirst);
|
|
builder.ParagraphFormat.Alignment = ParagraphAlignment.Right;
|
|
builder.Font.Name = "宋体";
|
|
builder.Font.Size = 12;
|
|
builder.Font.Color = Color.Gray;
|
|
builder.InsertField("PAGE", "");
|
|
builder.Write("/");
|
|
builder.InsertField("NUMPAGES", "");
|
|
|
|
// 设置设置第二页页码页数
|
|
builder.MoveToHeaderFooter(HeaderFooterType.FooterPrimary);
|
|
builder.ParagraphFormat.Alignment = ParagraphAlignment.Right;
|
|
builder.Font.Name = "宋体";
|
|
builder.Font.Size = 12;
|
|
builder.Font.Color = Color.Gray;
|
|
builder.InsertField("PAGE", "");
|
|
builder.Write("/");
|
|
builder.InsertField("NUMPAGES", "");
|
|
}
|
|
using var stream = new MemoryStream();
|
|
doc.Save(stream, SaveFormat.Docx);
|
|
return stream.ToArray();
|
|
}
|
|
}
|
|
}
|