Traduci Markdown in Document Object Model (DOM)
Per leggere, manipolare e modificare a livello di codice il contenuto e la formattazione di un documento, è necessario tradurlo in Aspose.Words Document Object Model (DOM).
A differenza dei documenti Word, Markdown non è conforme al DOM descritto nell’articolo Aspose.Words Document Object Model (DOM). Tuttavia, Aspose.Words fornisce il proprio meccanismo per tradurre i documenti Markdown in DOM e viceversa, in modo da poter lavorare con successo con i loro elementi come la formattazione del testo, tabelle, intestazioni e altri.
Questo articolo spiega come le varie funzionalità markdown possono essere tradotte in Aspose.Words DOM e nuovamente in formato Markdown.
Complessità della Traduzione Markdown – DOM – Markdown
La difficoltà principale di questo meccanismo non è solo tradurre Markdown in DOM, ma anche fare la trasformazione inversa – salvare il documento nel formato Markdown con una perdita minima. Ci sono elementi, come le virgolette multilivello, per i quali la trasformazione inversa non è banale.
Il nostro motore di traduzione consente agli utenti non solo di lavorare con elementi complessi in un documento Markdown esistente, ma anche di creare da zero il proprio documento in formato Markdown con la struttura originale. Per creare vari elementi, è necessario utilizzare stili con nomi specifici secondo alcune regole descritte più avanti in questo articolo. Tali stili possono essere creati a livello di codice.
Principi comuni di traduzione
Usiamo la formattazione Font per i blocchi in linea. Quando non esiste una corrispondenza diretta per una caratteristica Markdown in Aspose.Words DOM, utilizziamo uno stile di carattere con un nome che inizia con alcune parole speciali.
Per i blocchi contenitore, utilizziamo l’ereditarietà dello stile per denotare le funzionalità Markdown nidificate. In questo caso, anche quando non sono presenti elementi nidificati, utilizziamo anche stili di paragrafo con un nome che inizia con alcune parole speciali.
Anche gli elenchi puntati e ordinati sono blocchi contenitori in Markdown. Il loro annidamento è rappresentato in DOM allo stesso modo di tutti gli altri blocchi contenitori utilizzando l’ereditarietà dello stile. Tuttavia, inoltre, gli elenchi in DOM hanno una formattazione numerica corrispondente sia nello stile elenco che nella formattazione paragrafo.
Blocchi in linea
Utilizziamo la formattazione Font durante la traduzione delle funzionalità markdown in linea Bold, Italic o Strikethrough.
Funzionalità Markdown | Aspose.Words |
---|---|
Bold{1} |
Font.Bold = true |
Italic*italic text* |
Font.Italic = true |
Strikethrough~Strikethrough text~ |
Font.StrikeThrough = true |
|
Utilizziamo uno stile di carattere con un nome che inizia con la parola InlineCode
, seguito da un punto (.)
opzionale e da un numero di apici inversi (`)
per la funzionalità InlineCode
. Se viene mancato un certo numero di backtick, per impostazione predefinita verrà utilizzato un backtick.
Funzionalità Markdown | Aspose.Words |
---|---|
InlineCode{1} |
Font.StyleName = “InlineCode[.][N]” |
Autolink<scheme://domain.com> <email@domain.com> |
La classe FieldHyperlink |
Link{1} {2} {3} {4}) |
La classe FieldHyperlink |
Image{1} {2} {3} {4}) |
La classe Shape |
Blocchi contenitore
Un documento è una sequenza di blocchi contenitori come intestazioni, paragrafi, elenchi, virgolette e altri. I blocchi contenitore possono essere suddivisi in 2 classi: blocchi foglia e contenitori complessi. I blocchi foglia possono contenere solo contenuto in linea. I contenitori complessi, a loro volta, possono contenere altri blocchi contenitore, inclusi i blocchi Foglia.
Blocchi di foglie
La tabella seguente mostra esempi di utilizzo dei blocchi Leaf Markdown in Aspose.Words:
Funzionalità Markdown | Aspose.Words |
---|---|
HorizontalRule----- |
Questo è un semplice paragrafo con una forma di Regola Orizzontale corrispondente:DocumentBuilder.InsertHorizontalRule() |
ATX Heading# H1, ## H2, ### H3… |
ParagraphFormat.StyleName = “Heading N” , dove (1<= N <= 9).Questo viene tradotto in uno stile integrato e dovrebbe essere esattamente del modello specificato (non sono ammessi suffissi o prefissi). Altrimenti sarà solo un normale paragrafo con uno stile corrispondente |
Setext Heading=== (se Titolo di livello 1),--- (se intestazione di livello 2) |
ParagraphFormat.StyleName = “SetextHeading[some suffix]” , basato sullo stile “Heading N” .Se (N >= 2), verrà utilizzato “Heading 2” , altrimenti “Heading 1” .È consentito qualsiasi suffisso, ma l’importatore Aspose.Words utilizza rispettivamente i numeri “1” e “2” |
|
|
Indented Code | ParagraphFormat.StyleName = “IndentedCode[some suffix]” |
Fenced Code
|
ParagraphFormat.StyleName = “FencedCode[.][info string]” [.] e [info string] sono facoltativi |
Contenitori complessi
La tabella seguente mostra esempi di utilizzo dei contenitori complessi Markdown in Aspose.Words:
Funzionalità Markdown | Aspose.Words |
---|---|
Quote> quote, >> nested quote |
ParagraphFormat.StyleName = “Quote[some suffix]” Il suffisso nel nome dello stile è facoltativo, ma l’importatore Aspose.Words utilizza i numeri ordinati 1, 2, 3, …. in caso di virgolette annidate. L’annidamento è definito tramite gli stili ereditati |
|
|
BulletedList- Item 1 - Item 2 - Item 2a - Item 2b |
Gli elenchi puntati sono rappresentati utilizzando la numerazione dei paragrafi:ListFormat.ApplyBulletDefault() Possono essere presenti 3 tipi di elenchi puntati. Differiscono solo nel formato di numerazione di primissimo livello. Questi sono rispettivamente: ‘-’ , ‘+’ o ‘*’ |
OrderedList1. Item 1 2. Item 2 1) Item 2a 2) Item 2b |
Gli elenchi ordinati sono rappresentati utilizzando la numerazione dei paragrafi:ListFormat.ApplyNumberDefault() Possono essere presenti 2 indicatori di formato numerico: ‘.’ E ‘)’. L’indicatore predefinito è “.” |
|
Tabelle
Aspose.Words consente anche di tradurre le tabelle in DOM, come mostrato di seguito:
Funzionalità Markdown | Aspose.Words |
---|---|
Table a|b -|- c|d |
Classi Table, Row e Cell |
|