Превод Markdown до Document Object Model (DOM)
За да четете, манипулирате и променяте съдържанието и форматирането на документ, трябва да го преведете на Aspose.Words Document Object Model (DOM).
За разлика от Word документи, Markdown не съответства на DOM описани в Aspose.Words Document Object Model (DOM) статия. Обаче, Aspose.Words осигурява свой собствен механизъм за превод Markdown документи за DOM и обратно, за да можем успешно да работим с техните елементи като форматиране на текст, таблици, заглавни части и други.
Тази статия обяснява как различните markdown функции могат да бъдат преведени в Aspose.Words DOM и обратно към Markdown форматиране.
Сложност на превода Markdown - Да. DOM - Да. Markdown
Основната трудност на този механизъм е не само да превежда Markdown до DOM, но също така да направи обратната трансформация за да запази документа обратно към Markdown формат с минимална загуба. Има елементи, като многостепенни цитати, за които обратната трансформация не е тривиална.
Нашият превод двигател позволява на потребителите не само да работят със сложни елементи в съществуващи Markdown документ, но също така и за създаване на свой собствен документ в Markdown формат с оригиналната структура от нулата. За да създадете различни елементи, трябва да използвате стилове със специфични имена съгласно определени правила, описани по-късно в тази статия. Такива стилове могат да бъдат създадени програмно.
Общ превод Принципи
Ние използваме Font форматиране за вътрешни блокове. Когато няма пряка кореспонденция за Markdown функция в Aspose.Words DOM, използваме стил на характер с име, което започва от някои специални думи.
За контейнери блокове, ние използваме стил наследство, за да означаваме гнездо Markdown особености. В този случай, дори когато няма скрити черти, ние също използваме стилове на параграфа с име, което започва от някои специални думи.
Куршуми и поръчани списъци са контейнери блокове в Markdown Както добре. Тяхното гнездо е представено в DOM по същия начин, както за всички други контейнери блокове, използвайки стил наследство. Въпреки това, допълнително, списъци в DOM са отговаряли на форматиране на номера в стил на списъка или в форматиране на параграф.
Входни блокове
Ние използваме Font форматиране при превод Bold, Italic или ~ ~ Strikethrough ~ ~ inline markdown особености.
Markdown функция | Aspose.Words | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Bold{1} |
Font.Bold = true |
||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
|||||||||||||||
Italic*italic text* |
Font.Italic = true |
||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
|||||||||||||||
Strikethrough~Strikethrough text~ |
Font.StrikeThrough = true |
||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
Използваме стил на героя с име, което започва от думата InlineCode
последвано от незадължителна точка (.)
и редица подпори (`)
за InlineCode
функция. Ако се пропусне редица backticks, тогава един backtick ще се използва по подразбиране.
Markdown функция | Aspose.Words | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
InlineCode{1} |
Font.StyleName = “InlineCode[.][N]” |
||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
|||||||||||||||||||||||||||
Autolink<scheme://domain.com> <email@domain.com> |
На FieldHyperlink Клас | ||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
|||||||||||||||||||||||||||
Link{1} {2} {3} {4}) |
На FieldHyperlink Клас | ||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
|||||||||||||||||||||||||||
Image{1} {2} {3} {4}) |
На Shape Клас | ||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
Блокове за контейнери
Документът е поредица от контейнери блокове като заглавия, параграфи, списъци, кавички и други. Контейнерните блокове могат да бъдат разделени на 2 класа: Листни блокове и комплексни контейнери. Листните блокове могат да съдържат само в линия съдържание. Комплексните контейнери, от своя страна, могат да съдържат други контейнери блокове, включително Листни блокове.
Листни блокове
Таблицата по- долу показва примери за използване Markdown Листни блокове в Aspose.Words:
Markdown функция | Aspose.Words | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
HorizontalRule----- |
Това е прост параграф със съответстваща хоризонтална форма на правило:DocumentBuilder.InsertHorizontalRule() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ATX Heading# H1, ## H2, ### H3… |
ParagraphFormat.StyleName = "Heading N" , където (1 <= N <= 9).Това се превежда в вграден стил и трябва да бъде точно на посочения модел (не са позволени наставки или представки). В противен случай това ще бъде просто обикновен параграф със съответния стил |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Setext Heading=== (ако е посочено ниво 1),--- (ако е определено ниво 2) |
ParagraphFormat.StyleName = “SetextHeading[some suffix]” , въз основа на ‘Heading N’ стил.Ако (N >= 2) тогава ‘Heading 2’ ще се използва, в противен случай ‘Heading 1’. Всяка наставка е позволена, но Aspose.Words Вносителят използва съответно номерата год |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Indented Code | ParagraphFormat.StyleName = “IndentedCode[some suffix]” |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Fenced Code
|
ParagraphFormat.StyleName = “FencedCode[.][info string]” На [.] както и [info string] са по избор |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
Комплексни контейнери
Таблицата по- долу показва примери за използване Markdown Комплексни контейнери в Aspose.Words:
Markdown функция | Aspose.Words | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Quote> quote, >> nested quote |
ParagraphFormat.StyleName = “Quote[some suffix]” Наставката със стилно име е по избор, но Aspose.Words Вносителят използва поръчаните номера 1, 2, 3 …. в случай на гнездени кавички. Гнезденето се определя чрез наследените стилове |
||||||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
|||||||||||||||||||||||||||||||
BulletedList- Item 1 - Item 2 - Item 2a - Item 2b |
Списък с куршуми се представя чрез номериране на параграф:ListFormat.ApplyBulletDefault() Може да има 3 вида списъци с куршуми. Те са само diff в номерационен формат на първото ниво. Това са: ‘-’ , ‘+’ или ‘*’ съответно |
||||||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
|||||||||||||||||||||||||||||||
OrderedList1. Item 1 2. Item 2 1) Item 2a 2) Item 2b |
Поръчаните списъци се представят чрез номериране на параграф:ListFormat.ApplyNumberDefault() Може да има 2 маркери формат номер: гот. и) Подразбиращият се маркер е.. |
||||||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
Таблици
Aspose.Words също така позволява да превежда таблици в DOM, както е показано по-долу:
Markdown функция | Aspose.Words | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Table год |
b<br /> - |
||||||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|