Преведи Markdown в модел на обект на документ (DOM)
За да четете програмно, манипулирате и променяте съдържанието и форматирането на документ, трябва да го преведете в Aspose.Words обектен модел на документ (DOM).
За разлика от Word документи, Markdown не отговаря на DOM, описани в Aspose.Words Документ Обектен Модел (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 инлайн markdown функции.
Markdown функция | Aspose.Words | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Bold**bold text** |
get_Font()->set_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* |
get_Font()->set_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~ |
get_Font()->set_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
. Ако се пропуснат няколко беклека, тогава по подразбиране ще се използва един беклик.
Markdown функция | Aspose.Words | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
InlineCode**inline code** |
get_Font()->set_StyleName(u"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[link text](url) [link text](<url>"title") [link text](url 'title') [link text](url (title)) |
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   ) |
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----- |
Това е прост абзац със съответстваща форма 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… |
get_ParagraphFormat()->set_StyleName(u"Heading N") , където (1<= Н <= 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=== (if Heading level 1),--- (if Heading level 2) |
get_ParagraphFormat->set_StyleName(u"SetextHeading[some suffix]") , въз основа на ‘заглавие и’ стил.Ако (Н > = 2), тогава ще се използваHeading 2', в противен случай' Heading 1'. Допуска се всяка наставка, но Aspose.Words вносителят използва съответно номера “1” и “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
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Indented Code | get_ParagraphFormat->set_StyleName(u"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
|
get_ParagraphFormat()->set_StyleName(u"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 |
get_ParagraphFormat()->set_StyleName(u"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 |
Списъците с водещи символи са представени с номериране на абзаци:get_ListFormat()->ApplyBulletDefault() може да има 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
|
|||||||||||||||||||||||||||||||
OrderedList1. Item 1 2. Item 2 1) Item 2a 2) Item 2b |
Подредените списъци се представят с номериране на абзаци:get_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 a|b -|- c|d |
Класове Table, Row и Cell. | ||||||||||||||||||||||||||||||
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
|