使用Markdown功能
本主题讨论如何使用Aspose.Words实现Markdown功能。 Markdown是格式化纯文本的简单方法,可以轻松转换为HTML。 Aspose.Words支持以下Markdown功能:
- 标题
- 块引用
- 横向规则
- 大胆强调
- 斜体强调
Markdown功能实现大多遵循Aspose.WordsAPI中的CommonMark
规范,所有功能都表示为相应的样式或直接格式。 这意味着
- 粗体和斜体表示为
Font.Bold
和Font.Italic
。 - 标题是标题1-标题6样式的段落。
- 引号是样式名称中带有"Quote"的段落。
- HorizontalRule是具有HorizontalRule形状的段落。
Markdown重点文件
本节演示如何生成一个markdown文档,重点如下:
Markdown treats asterisks (*) and underscores (_) as indicators of emphasis.
You can write **bold** or *italic* text.
You can also write ***BoldItalic***text.
下面的代码片段可用于生成上述markdown文档。
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带标题的文件
本节演示如何生成标题如下的markdown文档:
The following produces headings:
# Heading1
## Heading2
### Heading3
#### Heading4
##### Heading5
###### Heading6
# **Bold Heading1**
下面的代码片段可用于生成上述markdown文档。
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文档
本节演示如何生成带有块引号的markdown文档,如下所示:
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
>
下面的代码片段可用于生成上述markdown文档。
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具有水平规则的文档
本节演示如何生成具有水平规则的markdown文档,如下所示:
We support Horizontal rules (Thematic breaks) in Markdown:
-----
下面的代码片段可用于生成上述markdown文档。
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); |
阅读Markdown文档
下面的代码片段向您展示了如何读取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); |
指定Markdown保存选项
Aspose.WordsAPI提供MarkdownSaveOptions类以指定其他选项,同时将文档保存为Markdown格式。
下面的代码示例演示了如何指定各种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); |
如何在导出为Markdown时对齐表内的内容
Aspose.WordsAPI提供TableContentAlignment枚举,它定义对齐方向,以便在导出到Markdown文档时对齐表中的内容。 下面的代码示例演示如何在表内对齐内容。
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); |