Преобразовать документ в Markdown

Markdown - популярный формат, используемый для разметки текста и его дальнейшего преобразования в HTML, PDF, DOCX или другие форматы. Многие разработчики выбирают этот формат для написания документации, подготовки статей для публикации в блогах, описания проектов и так далее.

Markdown настолько популярен, потому что с этим форматом легко работать, а также его можно довольно просто преобразовать в другие форматы. По этой причине Aspose.Words предоставляет возможность конвертировать документ из any supported load format в Markdown и наоборот – Aspose.Words также поддерживает наиболее популярный save formats.

Сейчас активно развивается функционал для работы с форматом Markdown, чтобы предоставить вам больше возможностей для удобной и комфортной работы с документами.

Преобразование документа

Чтобы преобразовать документ в формат Markdown, вам просто нужно загрузить документ в любом поддерживаемом формате или создать новый программно. Затем вам нужно сохранить документ в формате Markdown.

В следующем примере кода показано, как преобразовать DOCX в Markdown:

For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
// Load the document from disk.
auto doc = System::MakeObject<Document>(inputDataDir + u"Test.docx");
// Save the document to Markdown format.
doc->Save(outputDataDir + u"SpecifyMarkdownSaveOptions.SaveAsMD.md");

Вы также можете указать физическую папку, в которую вы хотите сохранить изображения, при экспорте документа в формат Markdown. По умолчанию Aspose.Words сохраняет изображения в той же папке, в которой сохранен файл документа, но вы можете изменить это поведение, используя свойство ImagesFolder.

Указание папки с помощью ImagesFolder также полезно, если вы сохраняете документ в потоке, а в Aspose.Words нет папки для сохранения изображений.

Если указанный параметр ImagesFolder не существует, он будет создан автоматически.

В следующем примере кода показано, как указать папку для изображений при сохранении документа в поток:

For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
// Load the document from disk.
auto doc = System::MakeObject<Document>(inputDataDir + u"Test.docx");
auto so = System::MakeObject<MarkdownSaveOptions>();
so->set_ImagesFolder(outputDataDir + u"\\Images");
auto stream = System::MakeObject<System::IO::MemoryStream>();
doc->Save(stream, so);

Укажите параметры сохранения при преобразовании в Markdown

Aspose.Words предоставляет возможность использовать класс MarkdownSaveOptions для работы с расширенными параметрами при сохранении документа в формате Markdown. Большинство свойств наследуют или перегружают свойства, которые уже существуют в других классах пространства имен Aspose.Words.Saving. В дополнение к ним также был добавлен ряд свойств, специфичных для формата Markdown. Например, свойство TableContentAlignment для управления выравниванием содержимого в таблицах или ImageSavingCallback и ImagesFolder для управления сохранением изображений при преобразовании документа в формат Markdown.

Поддерживаемые функции Markdown

Aspose.Words в настоящее время поддерживаются следующие Markdown функции, которые в основном соответствуют спецификации CommonMark в Aspose.Words API и представлены в виде соответствующих стилей или прямого форматирования:

  • Заголовки – это абзацы со стилями Heading 1 - Heading 6
  • Блок-кавычки - это абзацы с надписью “Quote” в названии стиля
  • Код с отступом - это абзацы с “кодом с отступом” в названии стиля
  • FencedCode - это абзацы с “FencedCode” в названии стиля
  • Встроенный код выполняется с “InlineCode” в названии стиля Font
  • Горизонтальные правила - это абзацы с формой HorizontalRule
  • Жирный акцент
  • Выделено курсивом
  • Зачеркнутое форматирование
  • Списки представляют собой пронумерованные или маркированные абзацы
  • Таблицы представлены с помощью класса Table
  • Ссылки представлены в виде класса FieldHyperlink

В следующем примере показано, как создать документ с некоторыми стилями и сохранить его в Markdown:

For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
auto doc = System::MakeObject<Document>();
auto builder = System::MakeObject<DocumentBuilder>(doc);
// Specify the "Heading 1" style for the paragraph.
builder->InsertParagraph();
builder->get_ParagraphFormat()->set_StyleName(u"Heading 1");
builder->Write(u"Heading 1");
// Specify the Italic emphasis for the paragraph.
builder->InsertParagraph();
// Reset styles from the previous paragraph to not combine styles between paragraphs.
builder->get_ParagraphFormat()->set_StyleName(u"Normal");
builder->get_Font()->set_Italic(true);
builder->Write(u"Italic Text");
// Reset styles from the previous paragraph to not combine styles between paragraphs.
builder->set_Italic(false);
// Specify a Hyperlink for the desired text.
builder->InsertParagraph();
builder->InsertHyperlink(u"Aspose", u"https://www.aspose.com", false);
builder->Write(u"Aspose");
// Save your document as a Markdown file.
doc->Save(outputDataDir + u"SpecifyMarkdownSaveOptions.SupportedMarkdownFeatures.md");

Результат выполнения этого примера кода показан ниже.

markdown-example-aspose-words-cpp

Полезные советы

Есть несколько нюансов и интересных кейсов, узнав которые, вы сможете работать с файлами Markdown более гибко и удобно. Например, есть возможность использовать:

  • SetextHeading, который позволяет создавать многострочные заголовки в Markdown, в то время как обычные заголовки в Markdown могут быть только однострочными. SetextHeading основан на стиле “Заголовок N”, и его уровень может быть только 1 или 2. Если N в “Заголовке N” больше или равно 2, то соответствующий SetextHeading основан на “Heading 2”, в противном случае - на “Heading 1”.
  • Различные маркеры для первого уровня маркированных списков ("-", “+” или “*”, маркер по умолчанию равен “-”.) и различные типы нумерации для упорядоченных списков ("." или “)”, маркер по умолчанию равен “.").