Traduire Markdown en Modèle d'objet de document (DOM)

Pour lire, manipuler et modifier par programmation le contenu et la mise en forme d’un document, vous devez le traduire en Aspose.Words Modèle d’objet de document (DOM).

Contrairement aux documents Word, Markdown n’est pas conforme au DOM décrit dans le Aspose.Words Modèle d’objet de document (DOM) l’article. Cependant, Aspose.Words fournit son propre mécanisme pour traduire Markdown documents en DOM et inversement, afin que nous puissions travailler avec succès avec leurs éléments tels que la mise en forme du texte, les tableaux, les en-têtes et autres.

Cet article explique comment les différentes fonctionnalités markdown peuvent être traduites au format Aspose.Words DOM et revenir au format Markdown.

Complexité de la Traduction Markdown – DOM – Markdown

La principale difficulté de ce mécanisme n’est pas seulement de traduire Markdown en DOM, mais aussi d’effectuer la transformation inverse – pour sauvegarder le document au format Markdown avec une perte minimale. Il y a des éléments, comme les guillemets multiniveaux, pour lesquels la transformation inverse n’est pas anodine.

Notre moteur de traduction permet aux utilisateurs non seulement de travailler avec des éléments complexes dans un document Markdown existant, mais également de créer leur propre document au format Markdown avec la structure d’origine à partir de zéro. Pour créer divers éléments, vous devez utiliser des styles avec des noms spécifiques selon certaines règles décrites plus loin dans cet article. De tels styles peuvent être créés par programmation.

Principes Communs de Traduction

Nous utilisons le formatage Font pour les blocs en ligne. Lorsqu’il n’y a pas de correspondance directe pour une entité Markdown dans Aspose.Words DOM, nous utilisons un style de caractère avec un nom qui commence par des mots spéciaux.

Pour les blocs conteneurs, nous utilisons l’héritage de style pour désigner les entités Markdown imbriquées. Dans ce cas, même lorsqu’il n’y a pas d’entités imbriquées, nous utilisons également des styles de paragraphe avec un nom commençant par des mots spéciaux.

Les listes à puces et ordonnées sont également des blocs conteneurs dans Markdown. Leur imbrication est représentée dans DOM de la même manière que pour tous les autres blocs conteneurs utilisant l’héritage de style. Cependant, de plus, les listes dans DOM ont une mise en forme numérique correspondante dans un style de liste ou une mise en forme de paragraphe.

Blocs en Ligne

Nous utilisons la mise en forme Font lors de la traduction des fonctionnalités Bold, Italic ou Strikethrough en ligne markdown.

Markdown caractéristique Aspose.Words
Bold
**bold text**
Font.Bold = true
Italic
*italic text*
Font.Italic = true
Strikethrough
~Strikethrough text~
Font.StrikeThrough = true

Nous utilisons un style de caractère avec un nom qui commence par le mot InlineCode, suivi d’un point facultatif (.) et d’un certain nombre de backticks (`) pour la fonctionnalité InlineCode. Si un certain nombre de backticks sont manqués, un backtick sera utilisé par défaut.

Markdown caractéristique Aspose.Words
InlineCode
**inline code**
Font.StyleName = "InlineCode[.][N]"
Autolink
<scheme://domain.com>
<email@domain.com>
La classe FieldHyperlink.
Link
[texte du lien](url)
[texte du lien](<url>"title")
[texte du lien](url 'title')
[texte du lien](url (title))
La classe FieldHyperlink.
Image
![](/words/java/translate-markdown-to-document-object-model/url)
![texte alternatif](/words/java/translate-markdown-to-document-object-model/<url>"title")
![texte alternatif](/words/java/translate-markdown-to-document-object-model/url ‘title’)
![texte alternatif](/words/java/translate-markdown-to-document-object-model/url (title))
La classe Shape.

Blocs de Conteneurs

Un document est une séquence de blocs conteneurs tels que des en-têtes, des paragraphes, des listes, des guillemets et autres. Les blocs de conteneurs peuvent être divisés en 2 classes: les blocs feuilles et les conteneurs complexes. Les blocs feuilles ne peuvent contenir que du contenu en ligne. Les conteneurs complexes, à leur tour, peuvent contenir d’autres blocs de conteneurs, y compris des blocs feuilles.

Blocs de Feuilles

Le tableau ci-dessous montre des exemples d’utilisation de blocs feuilles Markdown dans Aspose.Words:

Markdown caractéristique Aspose.Words
HorizontalRule
-----
Ceci est un paragraphe simple avec une forme HorizontalRule correspondante:
DocumentBuilder.InsertHorizontalRule()
ATX Heading
# H1, ## H2, ### H3…
ParagraphFormat.StyleName = "Heading N", où (1<= D <= 9).
Ceci est traduit en un style intégré et doit correspondre exactement au modèle spécifié (aucun suffixe ou préfixe n’est autorisé).
Sinon, ce ne sera qu’un paragraphe normal avec un style correspondant.
Setext Heading
=== (if Heading level 1),
--- (if Heading level 2)
ParagraphFormat.StyleName = "SetextHeading[some suffix]", basé sur le style' Titre N'.
Si (N > = 2), alors ‘Heading 2 ‘sera utilisé, sinon’ Heading 1’.
Tout suffixe est autorisé, mais l’importateur Aspose.Words utilise les nombres “1” et “2” respectivement.
Indented Code
<br/>if ()<br/>then<br/>else<br/>```
ParagraphFormat.StyleName = "IndentedCode[some suffix]"

Conteneurs Complexes

Le tableau ci-dessous montre des exemples d’utilisation de Markdown Conteneurs complexes dans Aspose.Words:

Markdown caractéristique Aspose.Words
Quote
> quote,
>> nested quote
ParagraphFormat.StyleName = "Quote[some suffix]"
Le suffixe dans le nom du style est facultatif, mais Aspose.Words l’importateur utilise les numéros ordonnés 1, 2, 3, …. en cas de guillemets imbriqués.
L’imbrication est définie via les styles hérités.
BulletedList
- Item 1
- Item 2
- Item 2a
- Item 2b
Les listes à puces sont représentées à l’aide de la numérotation des paragraphes:
ListFormat.ApplyBulletDefault()
Il peut y avoir 3 types de listes à puces. Ils ne sont diff que dans un format de numérotation du tout premier niveau. Ce sont: ‘-’, ‘+’ ou ‘*’ respectivement.
OrderedList
1. Item 1
2. Item 2
1) Item 2a
2) Item 2b
Les listes ordonnées sont représentées à l’aide de la numérotation des paragraphes:
ListFormat.ApplyNumberDefault()
Il peut y avoir 2 marqueurs de format numérique: ‘.’ et ‘)’. Le marqueur par défaut est ‘.’.

Tableaux

Aspose.Words permet également de traduire les tables en DOM, comme indiqué ci-dessous:

Markdown caractéristique Aspose.Words
Table
a|b
-|-
c|d
classes Table, Row et Cell.

Voir Aussi