Lavorare con Markdown Caratteristiche

Questo argomento illustra come implementare le funzionalità di Markdown utilizzando Aspose.Words. Markdown è un modo semplice per formattare il testo normale che può essere facilmente convertito in HTML. Aspose.Words supporta le seguenti funzionalità Markdown:

  • Rubrica
  • Blockquotes
  • Regole orizzontali
  • Grassetto enfasi
  • Corsivo enfasi

L’implementazione delle funzionalità Markdown segue principalmente le specifiche CommonMark nell’API Aspose.Words e tutte le funzionalità sono rappresentate come stili corrispondenti o formattazione diretta. Il che significa che

  • Grassetto e corsivo sono rappresentati come Font.Bold e Font.Italic.
  • Le intestazioni sono paragrafi con stili Intestazione 1 - Intestazione 6.
  • Le citazioni sono paragrafi con “Citazione” nel nome dello stile.
  • HorizontalRule è un paragrafo con forma HorizontalRule.

Markdown Documento con enfasi

Questa sezione illustra come produrre un documento markdown con enfasi come indicato di seguito:

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

Il seguente frammento di codice può essere utilizzato per produrre il documento markdown sopra indicato.

For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
builder->Writeln(u"Markdown treats asterisks (*) and underscores (_) as indicators of emphasis.");
builder->Write(u"You can write ");
builder->get_Font()->set_Bold(true);
builder->Write(u"bold");
builder->get_Font()->set_Bold(false);
builder->Write(u" or ");
builder->get_Font()->set_Italic(true);
builder->Write(u"italic");
builder->get_Font()->set_Italic(false);
builder->Writeln(u" text. ");
builder->Write(u"You can also write ");
builder->get_Font()->set_Bold(true);
builder->get_Font()->set_Italic(true);
builder->Write(u"BoldItalic");
builder->get_Font()->set_Bold(false);
builder->get_Font()->set_Italic(false);
builder->Write(u"text.");
System::String outputPath = outputDataDir + u"WorkingWithMarkdownFeatures.MarkdownDocumentWithEmphases.md";
builder->get_Document()->Save(outputPath);

Markdown Documento con intestazioni

Questa sezione illustra come produrre un documento markdown con intestazioni come indicato di seguito:

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

Il seguente frammento di codice può essere utilizzato per produrre il documento markdown sopra indicato.

For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<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->get_Font()->set_Bold(false);
builder->get_Font()->set_Italic(false);
builder->Writeln(u"The following produces headings:");
builder->get_ParagraphFormat()->set_Style(doc->get_Styles()->idx_get(u"Heading 1"));
builder->Writeln(u"Heading1");
builder->get_ParagraphFormat()->set_Style(doc->get_Styles()->idx_get(u"Heading 2"));
builder->Writeln(u"Heading2");
builder->get_ParagraphFormat()->set_Style(doc->get_Styles()->idx_get(u"Heading 3"));
builder->Writeln(u"Heading3");
builder->get_ParagraphFormat()->set_Style(doc->get_Styles()->idx_get(u"Heading 4"));
builder->Writeln(u"Heading4");
builder->get_ParagraphFormat()->set_Style(doc->get_Styles()->idx_get(u"Heading 5"));
builder->Writeln(u"Heading5");
builder->get_ParagraphFormat()->set_Style(doc->get_Styles()->idx_get(u"Heading 6"));
builder->Writeln(u"Heading6");
// Note, emphases are also allowed inside Headings:
builder->get_Font()->set_Bold(true);
builder->get_ParagraphFormat()->set_Style(doc->get_Styles()->idx_get(u"Heading 1"));
builder->Writeln(u"Bold Heading1");
System::String outputPath = outputDataDir + u"WorkingWithMarkdownFeatures.MarkdownDocumentWithHeadings.md";
doc->Save(outputPath);

Markdown Documento con virgolette di blocco

Questa sezione illustra come produrre un documento markdown con virgolette di blocco come indicato di seguito:

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
>

Il seguente frammento di codice può essere utilizzato per produrre il documento markdown sopra indicato.

For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
builder->Writeln(u"We support blockquotes in Markdown:");
builder->get_ParagraphFormat()->set_Style(doc->get_Styles()->idx_get(u"Quote"));
builder->Writeln(u"Lorem");
builder->Writeln(u"ipsum");
builder->get_ParagraphFormat()->set_Style(doc->get_Styles()->idx_get(u"Normal"));
builder->Writeln(u"The quotes can be of any level and can be nested:");
System::SharedPtr<Style> quoteLevel3 = doc->get_Styles()->Add(Aspose::Words::StyleType::Paragraph, u"Quote2");
builder->get_ParagraphFormat()->set_Style(quoteLevel3);
builder->Writeln(u"Quote level 3");
System::SharedPtr<Style> quoteLevel4 = doc->get_Styles()->Add(Aspose::Words::StyleType::Paragraph, u"Quote3");
builder->get_ParagraphFormat()->set_Style(quoteLevel4);
builder->Writeln(u"Nested quote level 4");
builder->get_ParagraphFormat()->set_Style(doc->get_Styles()->idx_get(u"Quote"));
builder->Writeln();
builder->Writeln(u"Back to first level");
System::SharedPtr<Style> quoteLevel1WithHeading = doc->get_Styles()->Add(Aspose::Words::StyleType::Paragraph, u"Quote Heading 3");
builder->get_ParagraphFormat()->set_Style(quoteLevel1WithHeading);
builder->Write(u"Headings are allowed inside Quotes");
System::String outputPath = outputDataDir + u"WorkingWithMarkdownFeatures.MarkdownDocumentWithBlockQuotes.md";
doc->Save(outputPath);

Markdown Documento con regola orizzontale

Questa sezione illustra come produrre un documento markdown con Regola orizzontale come indicato di seguito:

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

Il seguente frammento di codice può essere utilizzato per produrre il documento markdown sopra indicato.

For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(System::MakeObject<Document>());
builder->Writeln(u"We support Horizontal rules (Thematic breaks) in Markdown:");
builder->InsertHorizontalRule();
System::String outputPath = outputDataDir + u"WorkingWithMarkdownFeatures.MarkdownDocumentWithHorizontalRule.md";
builder->get_Document()->Save(outputPath);

Lettura di un documento Markdown

Il frammento di codice seguente mostra come leggere un documento markdown.

For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
// This is Markdown document that was produced in example of UC3.
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"QuotesExample.md");
// Let's remove Heading formatting from a Quote in the very last paragraph.
System::SharedPtr<Paragraph> paragraph = doc->get_FirstSection()->get_Body()->get_LastParagraph();
paragraph->get_ParagraphFormat()->set_Style(doc->get_Styles()->idx_get(u"Quote"));
System::String outputPath = outputDataDir + u"WorkingWithMarkdownFeatures.ReadMarkdownDocument.md";
doc->Save(outputPath);

Specificare Markdown Opzioni di salvataggio

L’API Aspose.Words fornisce la classe MarkdownSaveOptions per specificare opzioni aggiuntive durante il salvataggio di un documento nel formato Markdown.

Il seguente esempio di codice ha dimostrato come specificare varie opzioni di salvataggio Markdown.

auto builder = System::MakeObject<DocumentBuilder>();
builder->Writeln(u"Some text!");
// specify MarkDownSaveOptions
auto saveOptions = SaveOptions::CreateSaveOptions(SaveFormat::Markdown);
builder->get_Document()->Save(outputDataDir + u"TestDocument.md", saveOptions);

Come allineare il contenuto all’interno della tabella durante l’esportazione in Markdown

L’API Aspose.Words fornisce l’enumerazione TableContentAlignment che definisce le direzioni di allineamento per allineare i contenuti nelle tabelle durante l’esportazione nel documento Markdown. Nell’esempio di codice seguente viene illustrato come allineare il contenuto all’interno della tabella.

auto builder = System::MakeObject<DocumentBuilder>();
// Create a new table with two cells.
builder->InsertCell();
builder->get_ParagraphFormat()->set_Alignment(ParagraphAlignment::Right);
builder->Write(u"Cell1");
builder->InsertCell();
builder->get_ParagraphFormat()->set_Alignment(ParagraphAlignment::Center);
builder->Write(u"Cell2");
auto saveOptions = System::MakeObject<MarkdownSaveOptions>();
// Makes all paragraphs inside table to be aligned to Left.
saveOptions->set_TableContentAlignment(TableContentAlignment::Left);
builder->get_Document()->Save(outputDataDir + u"left.md", saveOptions);
// Makes all paragraphs inside table to be aligned to Right.
saveOptions->set_TableContentAlignment(TableContentAlignment::Right);
builder->get_Document()->Save(outputDataDir + u"right.md", saveOptions);
// Makes all paragraphs inside table to be aligned to Center.
saveOptions->set_TableContentAlignment(TableContentAlignment::Center);
builder->get_Document()->Save(outputDataDir + u"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->set_TableContentAlignment(TableContentAlignment::Auto);
builder->get_Document()->Save(outputDataDir + u"auto.md", saveOptions);