Traducir Markdown a Document Object Model (G)DOM)
Para leer, manipular y modificar programáticamente el contenido y formato de un documento, necesita traducirlo al documento Aspose.Words Document Object Model (G)DOM).
En contraste con los documentos de Word, Markdown no se ajusta a DOM descrito en el Aspose.Words Document Object Model (DOM) artículo. Sin embargo, Aspose.Words proporciona su propio mecanismo para traducir Markdown documentos a DOM y atrás, para que podamos trabajar con éxito con sus elementos como el formato de texto, tablas, encabezados y otros.
Este artículo explica cómo los diversos markdown características se pueden traducir Aspose.Words DOM y volver a Markdown formato.
Complejidad de la traducción Markdown – DOM – Markdown
La principal dificultad de este mecanismo no es sólo traducir Markdown a DOM, pero también para hacer la transformación inversa – para guardar el documento de nuevo a Markdown formato con mínima pérdida. Hay elementos, como las citas multinivel, para los cuales la transformación inversa no es trivial.
Nuestro motor de traducción permite a los usuarios no sólo trabajar con elementos complejos en un Markdown documento, pero también para crear su propio documento en Markdown formato con la estructura original desde cero. Para crear varios elementos, es necesario utilizar estilos con nombres específicos según ciertas reglas descritas más adelante en este artículo. Tales estilos se pueden crear programáticamente.
Traducción común Principios
Usamos Font formato para bloques de línea. Cuando no hay correspondencia directa para una Markdown característica en Aspose.Words DOM, usamos un estilo de carácter con un nombre que comienza de algunas palabras especiales.
Para bloques de contenedores, utilizamos herencia estilo para denotar anidado Markdown características. En este caso, incluso cuando no hay características anidadas, también utilizamos estilos de párrafo con un nombre que comienza de algunas palabras especiales.
Listas embotadas y ordenadas son bloques de contenedores en Markdown también. Su anidación está representada en DOM de la misma manera que para todos los demás bloques de contenedores usando la herencia estilo. Sin embargo, además, en las listas DOM han correspondido el formato número en el estilo de lista o el formato del párrafo.
Bloqueos de línea
Usamos Font formato al traducir Bold, Italic ################################################################################################################################################################################################################################################################ markdown características.
Markdown función | Aspose.Words |
---|---|
Bold{1} |
Font.Bold = true |
Italic*italic text* |
Font.Italic = true |
Strikethrough~Strikethrough text~ |
Font.StrikeThrough = true |
Usamos un estilo de carácter con un nombre que comienza desde la palabra <span notrans="<span notrans=" InlineCode
"="">," seguido de un punto opcional (.)
y una serie de backticks (`)
para el InlineCode
función. Si un número de backticks se pierde, entonces un backtick se utilizará por defecto.
Markdown función | Aspose.Words |
---|---|
InlineCode{1} |
Font.StyleName = “InlineCode[.][N]” |
Autolink<scheme://domain.com> <email@domain.com> |
El FieldHyperlink clase |
Link{1} {2} {3} {4}) |
El FieldHyperlink clase |
Image{1} {2} {3} {4}) |
El Shape clase |
Bloques de contenedores
Un documento es una secuencia de bloques de contenedores tales como encabezados, párrafos, listas, citas y otros. Los bloques de contenedores se pueden dividir en 2 clases: Bloques de hoja y contenedores complejos. Los bloques de hoja sólo pueden contener contenido en línea. Los contenedores complejos, a su vez, pueden contener otros bloques de contenedores, incluidos los bloques de hoja.
Bloques de hoja
El cuadro que figura a continuación muestra ejemplos de utilización Markdown Bloques de hoja en Aspose.Words:
Markdown función | Aspose.Words |
---|---|
HorizontalRule----- |
Este es un párrafo simple con una forma HorizontalRule correspondiente:DocumentBuilder.InsertHorizontalRule() |
ATX Heading# H1, ## H2, ### H3… |
ParagraphFormat.StyleName = “Heading N” , donde (1 0 = 0 0 = 9).Esto se traduce en un estilo incorporado y debe ser exactamente del patrón especificado (no se permiten sufijos o prefijos). De lo contrario, será sólo un párrafo regular con un estilo correspondiente |
Setext Heading=== (si nivel de dirección 1),--- (si nivel de dirección 2) |
ParagraphFormat.StyleName = “SetextHeading[some suffix]” , basado en “Heading N” estilo.Si (N >= 2), entonces “Heading 2” se utilizará, de lo contrario “Heading 1” .Cualquier sufijo está permitido, pero Aspose.Words importador utiliza números “1” y “2” respectivamente |
Indented Code | ParagraphFormat.StyleName = “IndentedCode[some suffix]” |
Fenced Code
|
ParagraphFormat.StyleName = “FencedCode[.][info string]” El [.] y [info string] son opcionales |
Contenedores complejos
El cuadro que figura a continuación muestra ejemplos de utilización Markdown Contenedores complejos en Aspose.Words:
Markdown función | Aspose.Words |
---|---|
Quote> quote, >> nested quote |
ParagraphFormat.StyleName = “Quote[some suffix]” El sufijo en nombre de estilo es opcional, pero Aspose.Words importador utiliza los números ordenados 1, 2, 3, …. en caso de cotizaciones anidadas. El anidaje se define a través de los estilos heredados |
BulletedList- Item 1 - Item 2 - Item 2a - Item 2b |
Las listas torcidas están representadas utilizando el número de párrafo:ListFormat.ApplyBulletDefault() Puede haber 3 tipos de listas de balas. Son sólo diff en un formato numeral del primer nivel. Estos son: ‘-’ , ‘+’ o ‘*’ respectivamente |
OrderedList1. Item 1 2. Item 2 1) Item 2a 2) Item 2b |
Las listas ordenadas están representadas mediante numeración del párrafo:ListFormat.ApplyNumberDefault() Puede haber 2 marcadores de formato número: ‘.’ y ‘)’. El marcador predeterminado es ‘.’ |
Cuadros
Aspose.Words también permite traducir tablas en DOM, como se muestra a continuación:
Markdown función | Aspose.Words |
---|---|
Table a | b - | - c | d |
Table, Row y Cell clases |