Traduttore Markdown a Document Object Model (DOM)
Per leggere, manipolare e modificare programmaticamente il contenuto e la formattazione di un documento, è necessario tradurlo al Aspose.Words Document Object Model (DOM).
In contrasto con i documenti di Word, Markdown non conforme a DOM descritto nel Aspose.Words Document Object Model (DOM) articolo. Tuttavia, Aspose.Words fornisce il proprio meccanismo per la traduzione Markdown documenti DOM e indietro, in modo che possiamo lavorare con successo con i loro elementi come la formattazione del testo, tabelle, intestazioni e altri.
Questo articolo spiega come i vari markdown caratteristiche possono essere tradotte in Aspose.Words DOM e torna a Markdown formato.
Complessità della traduzione Markdown – DOM – Markdown
La principale difficoltà di questo meccanismo non è solo tradurre Markdown a DOM, ma anche per fare la trasformazione inversa – per salvare il documento a Markdown formato con perdita minima. Ci sono elementi, come citazioni multilivello, per cui la trasformazione inversa non è banale.
Il nostro motore di traduzione consente agli utenti non solo di lavorare con elementi complessi in un esistente Markdown documento, ma anche per creare il proprio documento Markdown formato con la struttura originale da zero. Per creare vari elementi, è necessario utilizzare stili con nomi specifici secondo alcune regole descritte in seguito in questo articolo. Tali stili possono essere creati programmaticamente.
Traduzione comune Principi
Usiamo Font formattazione per blocchi in linea. Quando non c’è corrispondenza diretta per una Markdown funzione in Aspose.Words DOM, usiamo uno stile di carattere con un nome che parte da alcune parole speciali.
Per i blocchi di container, usiamo eredità di stile per denotare nidificato Markdown caratteristiche. In questo caso, anche quando non ci sono caratteristiche nidificate, utilizziamo anche stili di paragrafo con un nome che parte da alcune parole speciali.
Le liste Bulleted e ordinate sono blocchi di container in Markdown E anche. La loro nidificazione è rappresentata in DOM lo stesso modo di tutti gli altri blocchi di container utilizzando eredità di stile. Tuttavia, inoltre, le liste in DOM hanno corrisposto la formattazione del numero in uno stile di elenco o nella formattazione del paragrafo.
Blocchi in linea
Usiamo Font formattazione quando si traduce Bold, Italic o ~ ~ ~ ~ ~ ~ Inline ~ markdown caratteristiche.
Markdown caratteristica | Aspose.Words |
---|---|
Bold{1} |
Font.Bold = true |
Italic*italic text* |
Font.Italic = true |
Strikethrough~Strikethrough text~ |
Font.StrikeThrough = true |
Usiamo uno stile di carattere con un nome che parte dalla parola <span notrans="<span notrans=" InlineCode
"="">> seguito da un punto opzionale (.)
e un certo numero di backticks (`)
per il InlineCode
caratteristica. Se un certo numero di backticks è mancato, un backtick verrà utilizzato per impostazione predefinita.
Markdown caratteristica | Aspose.Words |
---|---|
InlineCode{1} |
Font.StyleName = “InlineCode[.][N]” |
Autolink<scheme://domain.com> <email@domain.com> |
The FieldHyperlink classe |
Link{1} {2} {3} {4}) |
The FieldHyperlink classe |
Image{1} {2} {3} {4}) |
The Shape classe |
Blocchi contenitore
Un documento è una sequenza di blocchi di container come voci, paragrafi, liste, citazioni e altri. I blocchi del contenitore possono essere suddivisi in 2 classi: Blocchi di foglie e contenitori complessi. I blocchi di foglie possono contenere solo contenuti in linea. I contenitori complessi, a loro volta, possono contenere altri blocchi di container, compresi i blocchi Leaf.
Blocchi fogliari
La tabella seguente mostra esempi di utilizzo Markdown Blocchi di foglie in Aspose.Words:
Markdown caratteristica | Aspose.Words |
---|---|
HorizontalRule----- |
Questo è un semplice paragrafo con una corrispondente forma orizzontaleRule:DocumentBuilder.InsertHorizontalRule() |
ATX Heading# H1, ## H2, ### H3… |
ParagraphFormat.StyleName = “Heading N” , dove (1 <= N <= 9).Questo è tradotto in uno stile incorporato e dovrebbe essere esattamente del modello specificato (non sono ammessi suffissi o prefissi). In caso contrario, sarà solo un paragrafo regolare con uno stile corrispondente |
Setext Heading=== (se Livello di testa 1),--- (se Livello di testa 2) |
ParagraphFormat.StyleName = “SetextHeading[some suffix]” , sulla base “Heading N” stile.Se (N >= 2), allora “Heading 2” sarà usato, altrimenti “Heading 1” .Qualsiasi suffisso è consentito, ma Aspose.Words importatore utilizza i numeri “1” e “2” rispettivamente |
Indented Code | ParagraphFormat.StyleName = “IndentedCode[some suffix]” |
Fenced Code
|
ParagraphFormat.StyleName = “FencedCode[.][info string]” The [.] e [info string] sono facoltativi |
Contenitori complessi
La tabella seguente mostra esempi di utilizzo Markdown Contenitori complessi in Aspose.Words:
Markdown caratteristica | Aspose.Words |
---|---|
Quote> quote, >> nested quote |
ParagraphFormat.StyleName = “Quote[some suffix]” Il suffisso in nome di stile è facoltativo, ma Aspose.Words importatore utilizza i numeri ordinati 1, 2, 3, …. in caso di preventivi nidi. La nidificazione è definita attraverso gli stili ereditati |
BulletedList- Item 1 - Item 2 - Item 2a - Item 2b |
Le liste provviste sono rappresentate utilizzando la numerazione del paragrafo:ListFormat.ApplyBulletDefault() Ci possono essere 3 tipi di elenchi puntati. Sono solo diff in un formato di numerazione del primo livello. Questi sono: ‘-’ , ‘+’ o ‘*’ rispettivamente |
OrderedList1. Item 1 2. Item 2 1) Item 2a 2) Item 2b |
Gli elenchi ordinati sono rappresentati utilizzando la numerazione del paragrafo:ListFormat.ApplyNumberDefault() Ci possono essere 2 marcatori di formato numeri: ‘.’ e ‘)’. Il marcatore predefinito è ‘.’ |
Tavole
Aspose.Words permette anche di tradurre i tavoli in DOM, come mostrato di seguito:
Markdown caratteristica | Aspose.Words |
---|---|
Table # |
B<br /> - No |