C# 如何将css代码引用到HtmlToImageConverter中
对于我正在创建的Discord机器人,我需要通过“profile”命令生成一个用户配置文件。HTML显示正常,但没有使用任何CSS样式。如何让html字符串包含CSS样式 我对HTML和CSS没有什么经验(这是别人为我做的),但我相信C# 如何将css代码引用到HtmlToImageConverter中,c#,html,css,C#,Html,Css,对于我正在创建的Discord机器人,我需要通过“profile”命令生成一个用户配置文件。HTML显示正常,但没有使用任何CSS样式。如何让html字符串包含CSS样式 我对HTML和CSS没有什么经验(这是别人为我做的),但我相信href是CSS的参考。我尝试过插入文档名,stylesheet.css,但没有成功(可能HTML找不到)。现在,它由{0}表示,这是我格式化字符串中的第一个对象{0}是它上面的css字符串变量 这些字符串中的每个\n都是通常的Enter击键,只有这样机器人才能读取
href
是CSS的参考。我尝试过插入文档名,stylesheet.css
,但没有成功(可能HTML找不到)。现在,它由{0}
表示,这是我格式化字符串中的第一个对象{0}
是它上面的css
字符串变量
这些字符串中的每个\n都是通常的Enter
击键,只有这样机器人才能读取。我在下面包含了原始的HTML和CSS文件
[命令(“配置文件”)]//使用HTML/CSS生成用户的配置文件
公共异步任务配置文件()
{
var account=UserAccounts.GetAccount(Context.User);
字符串css=“@font-face{\n font-family:'ralway';\n src:URL('ralway-Regular.ttf')格式('truetype');\n}\n\nhtml”+
{\n\n字体系列:“Raleway”,无衬线;\n\n}\n\n#probar{\n\n高度:24px;\n宽度:50%;\n+
“背景色:天蓝色;\n边框半径:30px;\n\n}\n\n#probox{\n\n背景色:浅蓝色;\n”+
“宽度:100%;\n边距:自动;\n边框半径:30px;\n\n}\n\n#窗口{\n\n宽度:300px;\n”+
“背景颜色:浅灰色;\n边距:0;\n/*\n背景图像:url(dafef97cb397e61f4c47ef27523b092c.jpg);\n”+
“背景大小:封面;\n背景重复:不重复;\n*/\n\n}\n\n#页眉{\n\n宽度:90%;\n页边空白:自动;\n”+
“填充顶部:10px;\n\n}\n\n#pfp{\n\n高度:150px;\n宽度:150px;\n边框半径:30px;\n边距:自动;\n”+
边框:灰色实心1px;\n\n}\n\n#名称{\n\n文本对齐:中心;\n\n}\n\n#内容{\n\n宽度:90%;\n边距:自动;\n+
“填充底部:10px;\n颜色:黑色;\n\n}\n\n.info{\n\n填充底部:5px;\n字体大小:12px;\n\n}\n”+
“\n#row{\n\n display:flex;\n color:black;\n\n}\n\n#level{\n\n margin:auto;\n\n}\n\n#yes{\n\n margin:0;\n text align:center;\n\n}”+
“\n\n#否{\n\n字体大小:40px;\n边距:0;\n文本对齐:中心;\n边框:纯黑色1px;\n\n}\n\n#信息列表{\n\n文本对齐:中心;\n边距顶部:15px;\n\n}”+
“\n\n#statlist{\n\n text align:right;\n margin top:15px;\n\n}\n\n.inforow{\n\n flex grow:1;\n width:33.3%;\n\n}\n\n#fixedbs{\n\n text align:center;\n”+
“位置:绝对;\n顶部:206px;\n左侧:70px;\n颜色:黑色;\n\n}\n\n”;
string html=string.Format(“\n\n\n\n\n\n\n StageBot用户配置文件\n\n”+
“\n\n\n\n\n\n\n\n\n\n\n”+
“\n\n{1}{2}
\n\n\n\n\n”+
“\n\n\n\n当前lvl进度/总lvl exp\n\n”+
“\n\n\n\n\n\n级别\n”+
“11
\n\n\n\nTotal EXP
\n”+
“服务器排名
\n全局排名
\n\n\n”+
“xxxxEXP
\nxxxx
\nxxxx
\n\n\n”+
“\n\n\n\n\n”,css,Context.User.Username,Context.User.Discriminator);
var converter=新的HtmlToImageConverter
{
宽度=400,
高度=400
};
var pngBytes=converter.GenerateImage(html,NReco.ImageGenerator.ImageFormat.Png);
wait Context.Channel.SendFileAsync(新内存流(pngBytes),“Profile.png”);
}
CSS
@font-face{
字体系列:“Raleway”;
src:URL('ralway-Regular.ttf')格式('truetype');
}
html{
字体系列:“Raleway”,无衬线;
}
#可能的{
高度:24px;
宽度:50%;
背景色:天蓝色;
边界半径:30px;
}
#益生菌{
背景颜色:浅蓝色;
宽度:100%;
保证金:自动;
边界半径:30px;
}
#窗口{
宽度:300px;
背景颜色:浅灰色;
保证金:0;
/*
背景图片:url(dafef97cb397e61f4c47ef27523b092c.jpg);
背景尺寸:封面;
背景重复:无重复;
*/
}
#标题{
宽度:90%;
保证金:自动;
填充顶部:10px;
}
#亲民党{
高度:150像素;
宽度:150px;
边界半径:30px;
保证金:自动;
边框:灰色实心1px;
}
#名字{
文本对齐:居中;
}
#内容{
宽度:90%;
保证金:自动;
垫底:10px;
颜色:黑色;
}
.info{
垫底:5px;
字体大小:12px;
}
#划船{
显示器:flex;
颜色:黑色;
}
#水平仪{
保证金:自动;
}
#对{
保证金:0;
文本对齐:居中;
}
#没有{
字体大小:40px;
保证金:0;
文本对齐:居中;
边框:纯黑1px;
}
#信息列表{
文本对齐:居中;
边缘顶部:15px;
}
#统计表{
文本对齐:右对齐;
边缘顶部:15px;
}
.inforow{
柔性生长:1;
宽度:33.3%;
}
#固定资产{
文本对齐:居中;
职位:绝对
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>discord thing</title>
<link rel="stylesheet" href="stylesheet.css">
</head>
<body>
<div id="window">
<div id="header">
<div id="pfp"></div>
<p id="name"><b>Garonen#6115</b></p>
</div>
<div id="content">
<div id="probox">
<div id="probar"></div>
<p id="fixedbs"><i>cur lvl prog / total lvl exp</i></p>
</div>
<div id="row">
<div class="inforow" id="level">
<p id="yes">Level</p>
<p id="no"><b>11</b></p>
</div>
<div class="inforow" id="infolist">
<p class="info">Total EXP</p>
<p class="info">Server Rank</p>
<p class="info">Global Rank</p>
</div>
<div class="inforow" id="statlist">
<p class="info">xxxxEXP</p>
<p class="info">#xxxx</p>
<p class="info">#xxxx</p>
</div>
</div>
</div>
</div>
</body>
</html>
string html = String.Format("<!doctype html>\n\n<html lang=\"en\">\n<head>\n \n <meta charset=\"utf-8\">\n\n <title>StageBot User Profile</title>\n\n " +
"<style>{0}</style>\n\n</head>\n\n<body> \n \n <div id=\"window\">\n \n <div id=\"header\">\n\n " +
"<div id=\"pfp\"></div>\n\n <p id=\"name\"><b>{1}#{2}</b></p>\n\n </div>\n\n <div id=\"content\">\n\n " +
"<div id=\"probox\">\n\n <div id=\"probar\"></div>\n\n <p id=\"fixedbs\"><i>cur lvl prog / total lvl exp</i></p>\n\n " +
"</div>\n\n <div id=\"row\">\n\n <div class=\"inforow\" id=\"level\">\n\n <p id=\"yes\">Level</p>\n " +
" <p id=\"no\"><b>11</b></p>\n\n </div>\n\n <div class=\"inforow\" id=\"infolist\">\n <p class=\"info\">Total EXP</p>\n" +
" <p class=\"info\">Server Rank</p>\n <p class=\"info\">Global Rank</p>\n </div>\n\n <div class=\"inforow\" id=\"statlist\">\n" +
" <p class=\"info\">xxxxEXP</p>\n <p class=\"info\">#xxxx</p>\n <p class=\"info\">#xxxx</p>\n </div>\n\n </div>\n\n " +
" </div> \n \n </div>\n \n</body>\n</html>", css, Context.User.Username, Context.User.Discriminator);