ترجمه Markdown به مستند سازی مدل شی (DOM)
برای خواندن، دستکاری و تغییر برنامه ریزی محتوا و قالب بندی یک سند، باید آن را به مدل شیء سند Aspose.Words (DOM) ترجمه کنید.
برخلاف اسناد ورد، Markdown با DOM که در Aspose.Words مدل شیء سند (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 دارای قالب بندی شماره مربوطه در سبک لیست یا قالب بندی پاراگراف هستند.
بلوک های خطی
ما هنگام ترجمه ویژگی های Bold، Italic یا Strikethrough inline markdown از قالب بندی Font استفاده می کنیم.
ویژگی Markdown | Aspose.Words |
---|---|
Bold**bold text** |
Font.Bold = true |
Italic*italic text* |
Font.Italic = true |
Strikethrough~Strikethrough text~ |
Font.StrikeThrough = true |
ما از یک سبک کاراکتر با نامی استفاده می کنیم که از کلمه InlineCode
شروع می شود، و به دنبال آن یک نقطه اختیاری (.)
و تعدادی از backticks (`)
برای ویژگی InlineCode
است. اگر تعدادی از backticks از دست رفته باشد، پس از آن یک backtick به طور پیش فرض استفاده خواهد شد.
ویژگی Markdown | Aspose.Words |
---|---|
InlineCode**inline code** |
Font.StyleName = "InlineCode[.][N]" |
Autolink<scheme://domain.com> <email@domain.com> |
کلاس FieldHyperlink |
Link[متن لینک](url) [متن لینک](<url>"title") [متن لینک](url 'title') [متن لینک](url (title)) |
کلاس FieldHyperlink |
Image![](/words/java/translate-markdown-to-document-object-model/url) ![متن جایگزین](/words/java/translate-markdown-to-document-object-model/<url>"title") ![متن جایگزین](/words/java/translate-markdown-to-document-object-model/url ‘title’) ![متن جایگزین](/words/java/translate-markdown-to-document-object-model/url (title)) |
کلاس 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=== (if Heading level 1),--- (if Heading level 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]" |
ظروف پیچیده
جدول زیر نمونه هایی از استفاده از 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 a|b -|- c|d |
Table، Row و Cell کلاس ها. |