ترجمه Markdown به Document Object Model (DOM)
برای خواندن، دستکاری و اصلاح محتوا و قالب بندی یک سند، باید آن را به Aspose.Words Document Object Model (DOM) ترجمه کنید.
برخلاف اسناد Word، Markdown با DOM توضیح داده شده در مقاله Aspose.Words Document Object Model (DOM) مطابقت ندارد. با این حال، Aspose.Words مکانیزم خاص خود را برای ترجمه اسناد Markdown به DOM و برگشت ارائه میکند تا بتوانیم با موفقیت با عناصر آنها مانند قالببندی متن، جداول، سرصفحهها و موارد دیگر کار کنیم.
این مقاله توضیح می دهد که چگونه می توان ویژگی های مختلف markdown را به Aspose.Words DOM ترجمه کرد و به فرمت Markdown بازگرداند.
پیچیدگی ترجمه Markdown – DOM – Markdown
مشکل اصلی این مکانیسم نه تنها ترجمه Markdown به DOM، بلکه انجام تبدیل معکوس است - برای ذخیره سند به فرمت Markdown با حداقل ضرر. عناصری مانند نقل قول های چندسطحی وجود دارد که تغییر معکوس برای آنها بی اهمیت نیست.
موتور ترجمه ما به کاربران این امکان را می دهد که نه تنها با عناصر پیچیده در یک سند Markdown موجود کار کنند، بلکه می توانند سند خود را در قالب Markdown با ساختار اصلی از ابتدا ایجاد کنند. برای ایجاد عناصر مختلف، باید از سبک هایی با نام های خاص مطابق با قوانین خاصی که در ادامه این مقاله توضیح داده شده است استفاده کنید. چنین سبک هایی را می توان به صورت برنامه نویسی ایجاد کرد.
اصول رایج ترجمه
ما از قالب بندی Font برای بلوک های درون خطی استفاده می کنیم. هنگامی که هیچ ارتباط مستقیمی برای ویژگی Markdown در Aspose.Words DOM وجود ندارد، از یک سبک کاراکتر با نامی استفاده میکنیم که از برخی کلمات خاص شروع میشود.
برای بلوکهای کانتینری، از وراثت سبک برای نشان دادن ویژگیهای Markdown تودرتو استفاده میکنیم. در این مورد، حتی زمانی که هیچ ویژگی تو در تو وجود ندارد، ما نیز از سبک های پاراگراف با نامی استفاده می کنیم که از برخی کلمات خاص شروع می شود.
لیست های گلوله شده و مرتب شده نیز بلوک های کانتینری در Markdown هستند. تودرتوی آنها در DOM مانند سایر بلوک های کانتینری با استفاده از وراثت سبک نمایش داده می شود. با این حال، علاوه بر این، فهرستها در DOM دارای قالببندی اعداد در سبک فهرست یا قالببندی پاراگراف هستند.
بلوک های درون خطی
ما از قالببندی Font هنگام ترجمه ویژگیهای Bold، Italic یا Strikethrough markdown درون خطی استفاده میکنیم.
ویژگی Markdown | Aspose.Words |
---|---|
Bold{1} |
Font.Bold = true |
Italic*italic text* |
Font.Italic = true |
Strikethrough~Strikethrough text~ |
Font.StrikeThrough = true |
|
ما از یک سبک کاراکتر با نامی استفاده می کنیم که از کلمه InlineCode
شروع می شود و به دنبال آن یک نقطه اختیاری (.)
و تعدادی بکتیک (`)
برای ویژگی InlineCode
وجود دارد. اگر تعدادی بکتیک از قلم افتاده باشد، به طور پیش فرض از یک بکتیک استفاده می شود.
ویژگی Markdown | Aspose.Words |
---|---|
InlineCode{1} |
Font.StyleName = “InlineCode[.][N]” |
Autolink<scheme://domain.com> <email@domain.com> |
کلاس FieldHyperlink |
Link{1} {2} {3} {4}) |
کلاس FieldHyperlink |
Image{1} {2} {3} {4}) |
کلاس Shape |
بلوک های کانتینری
یک سند دنباله ای از بلوک های کانتینری مانند سرفصل ها، پاراگراف ها، فهرست ها، نقل قول ها و موارد دیگر است. بلوک های کانتینری را می توان به 2 کلاس تقسیم کرد: بلوک های برگ و ظروف پیچیده. بلوک های برگ فقط می توانند حاوی محتوای درون خطی باشند. ظروف پیچیده به نوبه خود می توانند حاوی بلوک های ظروف دیگری از جمله بلوک های برگ باشند.
بلوک های برگ
جدول زیر نمونه هایی از استفاده از بلوک های برگ Markdown در Aspose.Words را نشان می دهد:
ویژگی Markdown | Aspose.Words |
---|---|
HorizontalRule----- |
این یک پاراگراف ساده با شکل HorizontalRule مربوطه است:DocumentBuilder.InsertHorizontalRule() |
ATX Heading# H1, ## H2, ### H3… |
ParagraphFormat.StyleName = "Heading N" ، جایی که (1≤ N ≤ 9).این به یک سبک داخلی ترجمه شده است و باید دقیقاً از الگوی مشخص شده باشد (هیچ پسوند یا پیشوند مجاز نیست). در غیر این صورت، فقط یک پاراگراف معمولی با سبک مربوطه خواهد بود |
Setext Heading=== (اگر عنوان سطح 1)،--- (اگر عنوان سطح 2) |
ParagraphFormat.StyleName = “SetextHeading[some suffix]” ، بر اساس سبک ‘Heading N’.اگر (N ≥ 2)، از ‘Heading 2’ استفاده می شود، در غیر این صورت ‘Heading 1’. هر پسوندی مجاز است، اما واردکننده Aspose.Words به ترتیب از اعداد “1” و “2” استفاده می کند |
|
|
Indented Code | ParagraphFormat.StyleName = “IndentedCode[some suffix]” |
Fenced Code
|
ParagraphFormat.StyleName = “FencedCode[.][info string]” [.] و [info string] اختیاری هستند |
کانتینرهای پیچیده
جدول زیر نمونه هایی از استفاده از ظروف مجتمع Markdown در Aspose.Words را نشان می دهد:
ویژگی Markdown | Aspose.Words |
---|---|
Quote> quote, >> nested quote |
ParagraphFormat.StyleName = “Quote[some suffix]” پسوند در نام سبک اختیاری است، اما واردکننده Aspose.Words از اعداد مرتب شده 1، 2، 3، … استفاده می کند. در صورت نقل قول های تو در تو تودرتو از طریق سبک های ارثی تعریف می شود |
|
|
BulletedList- Item 1 - Item 2 - Item 2a - Item 2b |
لیست های گلوله شده با استفاده از شماره گذاری پاراگراف نشان داده می شوند:ListFormat.ApplyBulletDefault() می تواند 3 نوع لیست گلوله ای وجود داشته باشد. آنها فقط در قالب شماره گذاری سطح اول متفاوت هستند. اینها به ترتیب عبارتند از: ‘-’ ، ‘+’ یا ‘*’ |
OrderedList1. Item 1 2. Item 2 1) Item 2a 2) Item 2b |
لیست های مرتب شده با استفاده از شماره گذاری پاراگراف نشان داده می شوند:ListFormat.ApplyNumberDefault() می تواند 2 نشانگر قالب عددی وجود داشته باشد: ‘.’ و ‘)’. نشانگر پیش فرض ‘.’ است |
|
جداول
Aspose.Words همچنین اجازه می دهد تا جداول را به DOM ترجمه کنید، همانطور که در زیر نشان داده شده است:
ویژگی Markdown | Aspose.Words |
---|---|
Table “الف |
b<br /> - |
|