【发布时间】:2019-07-16 09:42:58
【问题描述】:
我需要获取用户正在编写的文本(在 CKEditor HTML 中),然后将该文本添加到 MigraDoc 文档中,作为段落或我需要的任何内容。
我的想法是将文本转换为 MDDDL 文档(在内存中)并将其添加到文档中。但我不知道是否有任何允许这种行为的 DLL。
所以,我的问题是,有人可以给我指点或建议我如何做到这一点吗?我应该解析 HMTL 文本吗?如果是这样,我应该解析什么?之后如何添加?
【问题讨论】:
我需要获取用户正在编写的文本(在 CKEditor HTML 中),然后将该文本添加到 MigraDoc 文档中,作为段落或我需要的任何内容。
我的想法是将文本转换为 MDDDL 文档(在内存中)并将其添加到文档中。但我不知道是否有任何允许这种行为的 DLL。
所以,我的问题是,有人可以给我指点或建议我如何做到这一点吗?我应该解析 HMTL 文本吗?如果是这样,我应该解析什么?之后如何添加?
【问题讨论】:
PDFsharp 和 MigraDoc 都无法解析 HTML,所以要么自己编写代码,要么尝试寻找第三方库(可能尚不存在)。
我可能会将 HTML 直接转换为内存中的 MigraDoc 文档对象。
【讨论】:
AddParagraph(),然后致电AddFormattedText。在最好的情况下,只要支持的属性发生更改,您就调用AddFormattedText。对于一个简单的实现,您可以为每个字符调用AddFormattedText,但这会增加开销。
MigraDoc / PDFSharp 无法做到这一点。
但是,您可以使用HtmlAgilityPack nuget,然后使用它的htmlDoc.DocumentNode.Descendants() 从 html 中以平面列表形式提取文本片段,并使用node.ParentNode.Name 找出文本的标记然后将文本插入到您的 MigraDoc 文档中,使用 .AddFormattedText() 之类的内容,并对其应用自定义 MigraDoc 样式 - 即,如果父标签为“strong”,则应用 MigraDoc 样式,其中 Font.Italic = true; 等..
【讨论】: