LearnWordManage/AsposeWordManage.cs

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();
}
}
}