Traduzir Markdown para Document Object Model (DOM)
Para ler, manipular e modificar programaticamente o conteúdo e formatação de um documento, você precisa traduzi-lo para o Aspose.Words Document Object Model (DOM).
Em contraste com documentos do Word, Markdown não está em conformidade com o DOM descrito no Aspose.Words Document Object Model (DOM) artigo. No entanto, Aspose.Words fornece seu próprio mecanismo para a tradução Markdown documentos para DOM e de volta, para que possamos trabalhar com sucesso com seus elementos, como formatação de texto, tabelas, cabeçalhos e outros.
Este artigo explica como os vários markdown recursos podem ser traduzidos Aspose.Words DOM e de volta para Markdown formato.
Complexidade de Tradução Markdown – DOM – Markdown
A principal dificuldade deste mecanismo não é apenas traduzir Markdown para DOM, mas também para fazer a transformação reversa – para salvar o documento de volta para Markdown formato com perda mínima. Há elementos, como citações multiníveis, para os quais a transformação inversa não é trivial.
Nosso motor de tradução permite aos usuários não só trabalhar com elementos complexos em um existente Markdown documento, mas também para criar seu próprio documento em Markdown formato com a estrutura original do zero. Para criar vários elementos, você precisa usar estilos com nomes específicos de acordo com certas regras descritas mais tarde neste artigo. Tais estilos podem ser criados programaticamente.
Tradução comum Princípios
Nós usamos Font formatação para blocos em linha. Quando não há correspondência direta para um Markdown recurso em Aspose.Words DOM, usamos um estilo de personagem com um nome que começa a partir de algumas palavras especiais.
Para blocos de contêineres, usamos herança de estilo para denotar aninhado Markdown características. Neste caso, mesmo quando não há recursos aninhados, também usamos estilos de parágrafo com um nome que começa a partir de algumas palavras especiais.
Listas embutidas e ordenadas são blocos de contêineres em Markdown também. Seu aninhamento é representado em DOM da mesma maneira que para todos os outros blocos de recipiente usando herança de estilo. No entanto, adicionalmente, listas em DOM ter formatação de número correspondente em estilo de lista ou formatação de parágrafo.
Blocos de Inline
Nós usamos Font formatação ao traduzir Bold, Italic Ou “Atravessou” markdown características.
Markdown recurso | Aspose.Words |
---|---|
Bold{1} |
Font.Bold = true |
Italic*italic text* |
Font.Italic = true |
Strikethrough~Strikethrough text~ |
Font.StrikeThrough = true |
Usamos um estilo de personagem com um nome que começa a partir da palavra InlineCode
, seguido por um ponto opcional (.)
e um número de backticks (`)
para o InlineCode
recurso. Se um número de backticks for perdido, então um backtick será usado por padrão.
Markdown recurso | Aspose.Words |
---|---|
InlineCode{1} |
Font.StyleName = “InlineCode[.][N]” |
Autolink<scheme://domain.com> <email@domain.com> |
O FieldHyperlink classe |
Link{1} {2} {3} {4}) |
O FieldHyperlink classe |
Image{1} {2} {3} {4}) |
O Shape classe |
Blocos de recipiente
Um documento é uma sequência de blocos de contêineres, como títulos, parágrafos, listas, citações e outros. Os blocos de contêineres podem ser divididos em 2 classes: Blocos de folhas e contêineres complexos. Os blocos de folhas só podem conter conteúdo inline. Contêineres complexos, por sua vez, podem conter outros blocos de contêineres, incluindo blocos de folhas.
Blocos de folha
A tabela abaixo mostra exemplos de uso Markdown Blocos de folhas em Aspose.Words:
Markdown recurso | Aspose.Words |
---|---|
HorizontalRule----- |
Este é um parágrafo simples com uma forma HorizontalRule correspondente:DocumentBuilder.InsertHorizontalRule() |
ATX Heading# H1, ## H2, ### H3… |
ParagraphFormat.StyleName = "Heading N" , onde (1<= N <= 9).Isso é traduzido em um estilo embutido e deve ser exatamente do padrão especificado (nenhum sufixo ou prefixo é permitido). Caso contrário, será apenas um parágrafo regular com um estilo correspondente |
Setext Heading=== (se nível de cabeçalho 1),--- (se nível de cabeçalho 2) |
ParagraphFormat.StyleName = “SetextHeading[some suffix]” , baseado em ‘Heading N’ estilo.Se (N >= 2), então ‘Heading 2’ será usado, caso contrário ‘Heading 1’. Qualquer sufixo é permitido, mas Aspose.Words importador usa números “1” e “2” respectivamente |
Indented Code | ParagraphFormat.StyleName = “IndentedCode[some suffix]” |
Fenced Code
|
ParagraphFormat.StyleName = “FencedCode[.][info string]” O [.] e [info string] são opcionais |
Recipientes complexos
A tabela abaixo mostra exemplos de uso Markdown Contêineres complexos em Aspose.Words:
Markdown recurso | Aspose.Words |
---|---|
Quote> quote, >> nested quote |
ParagraphFormat.StyleName = “Quote[some suffix]” O sufixo em nome de estilo é opcional, mas Aspose.Words importador usa os números ordenados 1, 2, 3, …. em caso de citações aninhadas. O agrupamento é definido através dos estilos herdados |
BulletedList- Item 1 - Item 2 - Item 2a - Item 2b |
As listas Bulleted são representadas utilizando o número de parágrafos:ListFormat.ApplyBulletDefault() Pode haver 3 tipos de listas. Eles são apenas diff em um formato de numeração do primeiro nível. Estes são: ‘-’ , ‘+’ ou ‘*’ respectivamente |
OrderedList1. Item 1 2. Item 2 1) Item 2a 2) Item 2b |
Listas ordenadas são representadas usando numeração de parágrafo:ListFormat.ApplyNumberDefault() Pode haver 2 marcadores de formato de número: ‘.’ e ‘)’. O marcador padrão é ‘.’ |
Quadros
Aspose.Words também permite traduzir tabelas para DOM, como mostrado abaixo:
Markdown recurso | Aspose.Words |
---|---|
Table " |
b)<br /> - Não |