Преобразовать документ в 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-Python-via-.NET | |
doc = aw.Document() | |
builder = aw.DocumentBuilder(doc) | |
builder.writeln("Some text!") | |
doc.save(docs_base.artifacts_dir + "BaseConversions.docx_to_markdown.md") |
Вы также можете указать физическую папку, в которую вы хотите сохранить изображения, при экспорте документа в формат Markdown. По умолчанию Aspose.Words сохраняет изображения в той же папке, в которой сохранен файл документа, но вы можете изменить это поведение, используя свойство images_folder.
Указание папки с помощью images_folder также полезно, если вы сохраняете документ в потоке, а в Aspose.Words нет папки для сохранения изображений.
Если указанный параметр images_folder не существует, он будет создан автоматически.
В следующем примере кода показано, как указать папку для изображений при сохранении документа в поток:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document(docs_base.my_dir + "Image bullet points.docx") | |
saveOptions = aw.saving.MarkdownSaveOptions() | |
saveOptions.images_folder = docs_base.artifacts_dir + "Images" | |
doc.save(docs_base.artifacts_dir + "WorkingWithMarkdownSaveOptions.set_images_folder.md", saveOptions) |
Укажите параметры сохранения при преобразовании в Markdown
Aspose.Words предоставляет возможность использовать класс MarkdownSaveOptions для работы с расширенными параметрами при сохранении документа в формате Markdown. Большинство свойств наследуют или перегружают свойства, которые уже существуют в других классах aspose.words.saving. В дополнение к ним также был добавлен ряд свойств, специфичных для формата Markdown. Например, свойство table_content_alignment для управления выравниванием содержимого в таблицах или images_folder для управления сохранением изображений при преобразовании документа в формат Markdown.
Поддерживаемые функции Markdown
Aspose.Words в настоящее время поддерживает следующие Markdown функции, которые в основном соответствуют спецификации CommonMark
в Aspose.Words API и представлены в виде соответствующих стилей или прямого форматирования:
- Заголовки – это абзацы со стилями Heading 1 - Heading 6
- Блок-кавычки - это абзацы с надписью “Quote” в названии стиля
- IndentedCode - это абзацы с “IndentedCode” в названии стиля
- FencedCode - это абзацы с “FencedCode” в названии стиля
- InlineCode - это запуски с “InlineCode” в названии стиля
Font
- Горизонтальные правила - это абзацы с формой
HorizontalRule
- Жирный акцент
- Выделено курсивом
- StrikeThrough форматирование
- Списки представляют собой пронумерованные или маркированные абзацы
- Таблицы представлены с помощью класса Table
- Ссылки представлены в виде класса FieldHyperlink
В следующем примере показано, как создать документ с некоторыми стилями и сохранить его в Markdown:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document() | |
builder = aw.DocumentBuilder(doc) | |
# Specify the "Heading 1" style for the paragraph. | |
builder.paragraph_format.style_name = "Heading 1" | |
builder.writeln("Heading 1") | |
# Reset styles from the previous paragraph to not combine styles between paragraphs. | |
builder.paragraph_format.style_name = "Normal" | |
# Insert horizontal rule. | |
builder.insert_horizontal_rule() | |
# Specify the ordered list. | |
builder.insert_paragraph() | |
builder.list_format.apply_number_default() | |
# Specify the Italic emphasis for the text. | |
builder.font.italic = True | |
builder.writeln("Italic Text") | |
builder.font.italic = False | |
# Specify the Bold emphasis for the text. | |
builder.font.bold = True | |
builder.writeln("Bold Text") | |
builder.font.bold = False | |
# Specify the StrikeThrough emphasis for the text. | |
builder.font.strike_through = True | |
builder.writeln("StrikeThrough Text") | |
builder.font.strike_through = False | |
# Stop paragraphs numbering. | |
builder.list_format.remove_numbers() | |
# Specify the "Quote" style for the paragraph. | |
builder.paragraph_format.style_name = "Quote" | |
builder.writeln("A Quote block") | |
# Specify nesting Quote. | |
nestedQuote = doc.styles.add(aw.StyleType.PARAGRAPH, "Quote1") | |
nestedQuote.base_style_name = "Quote" | |
builder.paragraph_format.style_name = "Quote1" | |
builder.writeln("A nested Quote block") | |
# Reset paragraph style to Normal to stop Quote blocks. | |
builder.paragraph_format.style_name = "Normal" | |
# Specify a Hyperlink for the desired text. | |
builder.font.bold = True | |
# Note, the text of hyperlink can be emphasized. | |
builder.insert_hyperlink("Aspose", "https:#www.aspose.com", False) | |
builder.font.bold = False | |
# Insert a simple table. | |
builder.start_table() | |
builder.insert_cell() | |
builder.write("Cell1") | |
builder.insert_cell() | |
builder.write("Cell2") | |
builder.end_table() | |
# Save your document as a Markdown file. | |
doc.save(docs_base.artifacts_dir + "WorkingWithMarkdown.create_markdown_document.md") |
Результат выполнения этого примера кода показан ниже.
Полезные советы
Есть несколько нюансов и интересных кейсов, узнав которые, вы сможете работать с файлами Markdown более гибко и удобно. Например, есть возможность использовать:
- SetextHeading это позволяет создавать многострочные заголовки в Markdown, в то время как обычные заголовки в Markdown могут быть только однострочными. SetextHeading основан на стиле “Заголовок N”, и его уровень может быть только 1 или 2. Если N в “товарной позиции N” больше или равно 2, то соответствующий SetextHeading основан на “Heading 2”, в противном случае - на “Heading 1”.
- Различные маркеры для первого уровня маркированных списков ("-", “+” или “*”, маркер по умолчанию равен “-”.) и различные типы нумерации для упорядоченных списков ("." или “)”, маркер по умолчанию равен “.").