Terjemahkan Markdown ke Model Objek Dokumen (DOM)

Untuk membaca, memanipulasi, dan memodifikasi konten dan pemformatan dokumen secara terprogram, Anda perlu menerjemahkannya ke Model Objek Dokumen Aspose.Words (DOM).

Berbeda dengan dokumen Word, Markdown tidak sesuai dengan DOM yang dijelaskan dalam Aspose.Words Model Objek Dokumen (DOM) artikel. Namun, Aspose.Words menyediakan mekanismenya sendiri untuk menerjemahkan dokumen Markdown ke DOM dan sebaliknya, sehingga kita dapat berhasil mengerjakan elemennya seperti pemformatan teks, tabel, header, dan lainnya.

Artikel ini menjelaskan bagaimana berbagai fitur markdown dapat diterjemahkan ke dalam format Aspose.Words DOM dan kembali ke Markdown.

Kompleksitas Penerjemahan Markdown – DOM – Markdown

Kesulitan utama dari mekanisme ini tidak hanya menerjemahkan Markdown menjadi DOM, tetapi juga melakukan transformasi terbalik-menyimpan dokumen kembali ke format Markdown dengan kerugian minimal. Ada elemen, seperti tanda kutip bertingkat, yang transformasi baliknya tidak sepele.

Mesin terjemahan kami memungkinkan pengguna tidak hanya bekerja dengan elemen kompleks dalam dokumen Markdown yang ada, tetapi juga membuat dokumen mereka sendiri dalam format Markdown dengan struktur asli dari awal. Untuk membuat berbagai elemen, Anda perlu menggunakan gaya dengan nama tertentu sesuai dengan aturan tertentu yang dijelaskan nanti dalam artikel ini. Gaya seperti itu dapat dibuat secara terprogram.

Prinsip Penerjemahan Umum

Kami menggunakan pemformatan Font untuk blok sebaris. Jika tidak ada korespondensi langsung untuk fitur Markdown di Aspose.Words DOM, kami menggunakan gaya karakter dengan nama yang dimulai dari beberapa kata khusus.

Untuk blok penampung, kami menggunakan pewarisan gaya untuk menunjukkan fitur Markdown bersarang. Dalam hal ini, meskipun tidak ada fitur bersarang, kami juga menggunakan gaya paragraf dengan nama yang dimulai dari beberapa kata khusus.

Daftar berpoin dan terurut juga merupakan blok penampung dalam Markdown. Sarangnya direpresentasikan dalam DOM dengan cara yang sama seperti untuk semua blok penampung lainnya yang menggunakan pewarisan gaya. Namun, selain itu, daftar dalam DOM memiliki pemformatan angka yang sesuai baik dalam gaya daftar atau pemformatan paragraf.

Blok Sebaris

Kami menggunakan pemformatan Font saat menerjemahkan fitur Bold, Italic atau Strikethrough sebaris markdown.

Markdown fitur Aspose.Words
Bold
**bold text**
get_Font()->set_Bold(true)
Italic
*italic text*
get_Font()->set_Italic(true)
Strikethrough
~Strikethrough text~
get_Font()->set_StrikeThrough(true)

Kami menggunakan gaya karakter dengan nama yang dimulai dari kata InlineCode, diikuti dengan titik opsional (.) dan sejumlah backticks (`) untuk fitur InlineCode. Jika sejumlah backtick terlewatkan, maka satu backtick akan digunakan secara default.

Markdown fitur Aspose.Words
InlineCode
**inline code**
get_Font()->set_StyleName(u"InlineCode[.][N]")
Autolink
<scheme://domain.com>
<email@domain.com>
Kelas FieldHyperlink.
Link
[link text](url)
[link text](<url>"title")
[link text](url 'title')
[link text](url (title))
Kelas FieldHyperlink.
Image
![](url)
![alt text](<url>"title")
![alt text](url ‘title’)
![alt text](url (title))
Kelas Shape.

Blok Kontainer

Dokumen adalah urutan blok penampung seperti judul, paragraf, daftar, tanda kutip, dan lainnya. Blok kontainer dapat dibagi menjadi kelas 2: Blok daun dan Kontainer Kompleks. Blok daun hanya dapat berisi konten sebaris. Kontainer kompleks, pada gilirannya, dapat berisi blok kontainer lain, termasuk Blok daun.

Blok Daun

Tabel di bawah ini menunjukkan contoh penggunaan blok Daun Markdowndalam Aspose.Words:

Markdown fitur Aspose.Words
HorizontalRule
-----
Ini adalah paragraf sederhana dengan bentuk HorizontalRule yang sesuai:
DocumentBuilder::InsertHorizontalRule()
ATX Heading
# H1, ## H2, ### H3…
get_ParagraphFormat()->set_StyleName(u"Heading N"), dimana (1<= N <= 9).
Ini diterjemahkan ke dalam gaya bawaan dan harus persis dengan pola yang ditentukan (tidak ada sufiks atau awalan yang diizinkan).
Jika tidak, itu hanya akan menjadi paragraf biasa dengan gaya yang sesuai.
Setext Heading
=== (if Heading level 1),
--- (if Heading level 2)
get_ParagraphFormat->set_StyleName(u"SetextHeading[some suffix]"), berdasarkan gaya "Heading N".
Jika (N >= 2), maka "Heading 2" akan digunakan, jika tidak "Heading 1".
Sufiks apa pun diperbolehkan, tetapi pengimpor Aspose.Words masing-masing menggunakan angka “1” dan “2”.
Indented Code get_ParagraphFormat->set_StyleName(u"IndentedCode[some suffix]")
Fenced Code
``` c#
if ()
then
else
```
get_ParagraphFormat()->set_StyleName(u"FencedCode[.][info string]")
[.] dan [info string] adalah opsional.

Wadah Kompleks

Tabel di bawah ini menunjukkan contoh penggunaan Wadah Kompleks Markdowndalam Aspose.Words:

Markdown fitur Aspose.Words
Quote
> quote,
>> nested quote
get_ParagraphFormat()->set_StyleName(u"Quote[some suffix]")
Sufiks dalam nama gaya bersifat opsional, tetapi pengimpor Aspose.Words menggunakan nomor terurut1, 2, 3, …. dalam kasus tanda kutip bersarang.
Bersarang didefinisikan melalui gaya yang diwariskan.
BulletedList
- Item 1
- Item 2
- Item 2a
- Item 2b
Daftar berpoin direpresentasikan menggunakan penomoran paragraf:
get_ListFormat()->ApplyBulletDefault()
Mungkin ada 3 jenis daftar berpoin. Mereka hanya berbeda dalam format penomoran tingkat pertama. Ini adalah: ‘-’, ‘+’ atau ‘*’ masing-masing.
OrderedList
1. Item 1
2. Item 2
1) Item 2a
2) Item 2b
Daftar terurut direpresentasikan menggunakan penomoran paragraf:
get_ListFormat()->ApplyNumberDefault()
Mungkin ada penanda format angka 2: ‘.’ dan ‘)’. Penanda standarnya adalah ‘.’.

Tabel

Aspose.Words juga memungkinkan untuk menerjemahkan tabel menjadi DOM, seperti yang ditunjukkan di bawah ini:

Markdown fitur Aspose.Words
Table
a|b
-|-
c|d
kelas Table, Row dan Cell.

Lihat Juga