Trabajar con Markdown Funciones

En este tema se analiza cómo implementar las funciones Markdown utilizando Aspose.Words. Markdown es una forma sencilla de formatear texto sin formato que se puede convertir fácilmente a HTML. Aspose.Words admite las siguientes Markdown funciones:

  • Rúbricas
  • Citas en bloque
  • Reglas horizontales
  • Énfasis en negrita
  • Énfasis en cursiva

La implementación de la característica Markdown sigue principalmente la especificación CommonMark en Aspose.Words API y todas las características se representan como estilos correspondientes o formato directo. Lo que significa que

  • Negrita y cursiva se representan como Font.Bold y Font.Italic.
  • Los encabezados son párrafos con estilos Heading 1 - Heading 6.
  • Las citas son párrafos con “Cita” en el nombre del estilo.
  • HorizontalRule es un párrafo con forma HorizontalRule.

Markdown Documento con énfasis

Esta sección le muestra cómo producir un documento markdown con énfasis como se indica a continuación:

Markdown treats asterisks (*) and underscores (_) as indicators of emphasis.
You can write **bold** or *italic* text. 
You can also write ***BoldItalic***text.

El siguiente fragmento de código se puede utilizar para producir el documento markdown indicado anteriormente.

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.writeln("Markdown treats asterisks (*) and underscores (_) as indicators of emphasis.");
builder.write("You can write ");
builder.getFont().setBold(true);
builder.write("bold");
builder.getFont().setBold(false);
builder.write(" or ");
builder.getFont().setItalic(true);
builder.write("italic");
builder.getFont().setItalic(false);
builder.writeln(" text. ");
builder.write("You can also write ");
builder.getFont().setBold(true);
builder.getFont().setItalic(true);
builder.write("BoldItalic");
builder.getFont().setBold(false);
builder.getFont().setItalic(false);
builder.write("text.");
builder.getDocument().save("EmphasesExample.md");

Markdown Documento con Encabezados

Esta sección le muestra cómo producir un documento markdown con encabezados como se indica a continuación:

The following produces headings:
# Heading1
## Heading2
### Heading3
#### Heading4
##### Heading5
###### Heading6
# **Bold Heading1**

El siguiente fragmento de código se puede utilizar para producir el documento markdown dado anteriormente.

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// By default Heading styles in Word may have bold and italic formatting.
// If we do not want text to be emphasized, set these properties explicitly to
// false.
builder.getFont().setBold(false);
builder.getFont().setItalic(false);
builder.writeln("The following produces headings:");
builder.getParagraphFormat().setStyle(doc.getStyles().get("Heading 1"));
builder.writeln("Heading1");
builder.getParagraphFormat().setStyle(doc.getStyles().get("Heading 2"));
builder.writeln("Heading2");
builder.getParagraphFormat().setStyle(doc.getStyles().get("Heading 3"));
builder.writeln("Heading3");
builder.getParagraphFormat().setStyle(doc.getStyles().get("Heading 4"));
builder.writeln("Heading4");
builder.getParagraphFormat().setStyle(doc.getStyles().get("Heading 5"));
builder.writeln("Heading5");
builder.getParagraphFormat().setStyle(doc.getStyles().get("Heading 6"));
builder.writeln("Heading6");
// Note, emphases are also allowed inside Headings:
builder.getFont().setBold(true);
builder.getParagraphFormat().setStyle(doc.getStyles().get("Heading 1"));
builder.writeln("Bold Heading1");
doc.save(dataDir + "HeadingsExample.md");

Markdown Documento con Comillas en Bloque

Esta sección le muestra cómo producir un documento markdown con comillas en bloque como se indica a continuación:

We support blockquotes in Markdown:
>*Lorem*
>*ipsum*
>The quotes can be of any level and can be nested:
>>>Quote level 3
>>>
>>>>Nested quote level 4
>
>*Back to first level*
>### Headings are allowed inside Quotes
>

El siguiente fragmento de código se puede utilizar para producir el documento markdown dado anteriormente.

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.writeln("We support blockquotes in Markdown:");
builder.getParagraphFormat().setStyle(doc.getStyles().get("Quote"));
builder.writeln("Lorem");
builder.writeln("ipsum");
builder.getParagraphFormat().setStyle(doc.getStyles().get("Normal"));
builder.writeln("The quotes can be of any level and can be nested:");
Style quoteLevel3 = doc.getStyles().add(StyleType.PARAGRAPH, "Quote2");
builder.getParagraphFormat().setStyle(quoteLevel3);
builder.writeln("Quote level 3");
Style quoteLevel4 = doc.getStyles().add(StyleType.PARAGRAPH, "Quote3");
builder.getParagraphFormat().setStyle(quoteLevel4);
builder.writeln("Nested quote level 4");
builder.getParagraphFormat().setStyle(doc.getStyles().get("Quote"));
builder.writeln();
builder.writeln("Back to first level");
Style quoteLevel1WithHeading = doc.getStyles().add(StyleType.PARAGRAPH, "Quote Heading 3");
builder.getParagraphFormat().setStyle(quoteLevel1WithHeading);
builder.write("Headings are allowed inside Quotes");
doc.save(dataDir + "QuotesExample.md");

Markdown Documento con Regla Horizontal

Esta sección le muestra cómo producir un documento markdown con Regla horizontal como se indica a continuación:

We support Horizontal rules (Thematic breaks) in Markdown:
-----

El siguiente fragmento de código se puede utilizar para producir el documento markdown indicado anteriormente.

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
DocumentBuilder builder = new DocumentBuilder(new Document());
builder.writeln("We support Horizontal rules (Thematic breaks) in Markdown:");
builder.insertHorizontalRule();
builder.getDocument().save(dataDir + "HorizontalRuleExample.md");

Lectura de un documento Markdown

El siguiente fragmento de código le muestra cómo leer un documento markdown.

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// This is Markdown document that was produced in example of
// MarkdownDocumentWithBlockQuotes.
Document doc = new Document(dataDir + "QuotesExample.md");
// Let's remove Heading formatting from a Quote in the very last paragraph.
Paragraph paragraph = doc.getFirstSection().getBody().getLastParagraph();
paragraph.getParagraphFormat().setStyle(doc.getStyles().get("Quote"));
doc.save(dataDir + "QuotesModifiedExample.md");

Especifique Markdown Opciones de guardado

Aspose.Words API proporciona la clase MarkdownSaveOptions para especificar opciones adicionales al guardar un documento en el formato Markdown.

El siguiente ejemplo de código demuestra cómo especificar varias opciones de guardado Markdown.

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
DocumentBuilder builder = new DocumentBuilder();
builder.writeln("Some text!");
// specify MarkDownSaveOptions
MarkdownSaveOptions saveOptions = (MarkdownSaveOptions) SaveOptions.createSaveOptions(SaveFormat.MARKDOWN);
builder.getDocument().save(dataDir + "TestDocument.md", saveOptions);

Cómo Alinear el Contenido Dentro de la Tabla mientras se Exporta a Markdown

Aspose.Words API proporciona una enumeración TableContentAlignment que define las direcciones de alineación para alinear el contenido de las tablas mientras se exporta al documento Markdown. El siguiente ejemplo de código demuestra cómo alinear el contenido dentro de la tabla.

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
DocumentBuilder builder = new DocumentBuilder();
// Create a new table with two cells.
builder.insertCell();
builder.getParagraphFormat().setAlignment(ParagraphAlignment.RIGHT);
builder.write("Cell1");
builder.insertCell();
builder.getParagraphFormat().setAlignment(ParagraphAlignment.CENTER);
builder.write("Cell2");
MarkdownSaveOptions saveOptions = new MarkdownSaveOptions();
// Makes all paragraphs inside table to be aligned to Left.
saveOptions.setTableContentAlignment(TableContentAlignment.LEFT);
builder.getDocument().save(dataDir + "left.md", saveOptions);
// Makes all paragraphs inside table to be aligned to Right.
saveOptions.setTableContentAlignment(TableContentAlignment.RIGHT);
builder.getDocument().save(dataDir + "right.md", saveOptions);
// Makes all paragraphs inside table to be aligned to Center.
saveOptions.setTableContentAlignment(TableContentAlignment.CENTER);
builder.getDocument().save(dataDir + "center.md", saveOptions);
// Makes all paragraphs inside table to be aligned automatically.
// The alignment in this case will be taken from the first paragraph in
// corresponding table column.
saveOptions.setTableContentAlignment(TableContentAlignment.AUTO);
builder.getDocument().save(dataDir + "auto.md", saveOptions);