我正在使用Telerik文字处理(WP),在某些情况下,屏幕上的HTML输出中有一行删除线,表明事件已取消。
由于WP的工作原理,它无法以标准方式使用链接和相对路径来使用CSS,因此会在CSHTML文件中使用样式标签。
如果在页面中我使用
.cancelled-event {
color: #c82333;
text-decoration: underline !important
}
如果我使用
,则该文本带有下划线并正确着色。.cancelled-event {
color: #c82333;
text-decoration: line-through !important
}
我只给文本加上了正确的颜色。
Overline也行不通,但是仅对此进行了测试,以确保Im不会成为白痴(并不意味着Im不是白痴,而是仍然是容易检查的对象之一)
我想提供的帮助是
CSHTML页面如下,它将使这个问题肿的munis代码。
<style>
.date-selection {
border: 1px solid #8c8c8c;
background-color: #ffffff
}
.cancelled-event {
color: #c82333;
text-decoration: line-through !important
... more styles here...
}
</style>
<img src="http://localhost:8001/images/logo.png" />
<br/>
<partial name="~/Views/Roster/_RosterAgenda.cshtml" model="@Model" />
我知道在2/3场景中确实显示了删除线。
PDF的生成是这样完成的,传入的字节数组以base 64编码,因为原始文件信息通过有线从一个系统传递到API。
public byte[] ConvertHtmlToPdf(byte[] fileData, string extension, PageSettings.PageOrientation orientation)
{
byte[] convertedData = null;
var base64EncodedBytes = Convert.FromBase64String(Encoding.Default.GetString(fileData));
var html = Encoding.UTF8.GetString(base64EncodedBytes);
HtmlFormatProvider htmlProvider = new HtmlFormatProvider();
RadFlowDocument document = htmlProvider.Import(html);
IFormatProvider<RadFlowDocument> provider = this.providers
.FirstOrDefault(p => p.SupportedExtensions
.Any(e => string.Compare(extension, e, StringComparison.InvariantCultureIgnoreCase) == 0));
if (provider == null)
{
Log.Error($"No provider found that supports the extension: {extension}");
return null;
}
var quality = Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Export.ImageQuality.Medium;
PdfFormatProvider formatProvider = new PdfFormatProvider();
formatProvider.ExportSettings.ImageQuality = quality;
if (document.Sections.Any())
{
foreach (var section in document.Sections)
{
//section.PageOrientation = orientation == PageSettings.PageOrientation.Landscape ? PageOrientation.Landscape : PageOrientation.Portrait;
section.Rotate(orientation == PageSettings.PageOrientation.Landscape ? PageOrientation.Landscape : PageOrientation.Portrait);
}
}
using (var stream = new MemoryStream())
{
formatProvider.Export(document, stream);
convertedData = stream.ToArray();
}
return convertedData;
}
答案 0 :(得分:0)
我找到了一种更好,更轻松,更好的方法,但这仅在您也拥有Kendo Tools许可证的情况下才有效。
$(".export-pdf").click(function() {
// Convert the DOM element to a drawing using kendo.drawing.drawDOM
kendo.drawing.drawDOM($(".content-wrapper"))
.then(function(group) {
// Render the result as a PDF file
return kendo.drawing.exportPDF(group, {
paperSize: "auto",
margin: { left: "1cm", top: "1cm", right: "1cm", bottom: "1cm" }
});
})
.done(function(data) {
// Save the PDF file
kendo.saveAs({
dataURI: data,
fileName: "HR-Dashboard.pdf",
proxyURL: "https://demos.telerik.com/kendo-ui/service/export"
});
});
});
像通常的Telerik文档一样糟糕,要找到您想要的任何东西,您几乎必须开始寻找其他东西。但是,此代码位于
https://www.telerik.com/blogs/5-ways-export-asp-net-word-pdf-file
这样做的好处,而且只有在您拥有用于xxx的用户界面时,这才再次有效。在这种情况下,我将UI用于ASP.Net Core,也使用Typescript,它也需要修改明确键入的文件kendo.all.d.ts。
function drawDOM(element: JQuery, options: any): JQueryPromise<any>; //Existing code in the d.ts file
function drawDOM(element: JQuery<HTMLElement>);
function drawDOM(element: any, options?: any): JQueryPromise<any>;
但这是\原因,因为没有传入HTMLElement的jquery对象类型。这使它更加健壮,使您可以传递更多信息。
我怀疑这个答案只会对少数人有用,但是希望这会在将来对某人有所帮助。