ایجاد: ۱۹:۳۷ ۱۳۹۱/۱۰/۶
ویرایش: ۱۸:۲۶ ۱۳۹۱/۱۰/۷

یادداشت‌ها

»

همه چیز درباره ساختار RTF (متن غنی شده)

ارائه مقاله یا مطالب یک سایت به فرمت‌های مختلف، یکی از نیازها سایت‌های محتوایی است. فرمت RTF نسبت به فایل‌های doc بهتر است چرا که برای باز شدن آن روی سیستم کاربر، نیاز به هیچ برنامه‌ای نیست (همان وردپد که همراه ویندوز نصب می‌شود کافی است) و همچنین ویروس نمی‌تواند به آن الحاق شود (مگر اینکه ویروس به فایل word الحالق شود و سپس پسوند آن فیل دستی از doc به rtf عوض شود)
همچنین این فایل‌ها ساده‌تر تولید می‌شوند و کار با آنها ساده‌تر است در عین اینکه اکثر قابلیت‌های WORD را پشتیبانی می‌کنند.
برای تولید فایل doc توسط php چهار روش وجود دارد که همه جا میسر نیست و دردسرهای خاص خود را دارد.
اما همانطور که گفتیم، تولید فایل rtf امری ساده‌تر است البته نهایتا می‌توان rtf را با پسوند doc به مخاطب ارائه داد!
یک نکته قابل توجه است که اگر فایل html را با پسوند doc ذخیره کنیم، باز هم مشکلی پیش نمی‌آید و word آن را درست (با همان رنگ و ساختاری که در فایل اچ‌تی‌ام‌ال تعیین شده) نمایش می‌دهد. پس چرا به سراغ rtf می‌رویم؟
پاسخ این است که در rtf کنترل خیلی بهتری روی صفحه‌بندی، ابعاد صفحه و ... داریم. درست شبیه word و این قابلیت‌ها در متن html نیست.
کلاس PHP RTF Lite بهترین و کامل‌ترین کلاس php است که برای تولید rtf دیده‌ام.
به دلیل برخی تغییراتی که در کلاس فوق نیاز بود (خصوصا بحث right to left) نیاز به مطالعه در خصوص این فرمت پیدا کردم که بهترین منبع آن کتاب RTF انتشارات Oreilly چاپ 2003 بود که 28 صفحه آن به رایگان در سایت‌شان درج شده است. (دانلود)
در ادامه به برخی نکات پراکنده در خصوص فرمت و ساختار فایل rtf اشاره می‌کنم.
اگر فایل آر تی اف را توسط یک ادیتور متنی باز کنید، با ساختاری شبیه ساختار زیر مواجه می‌شوید:
{rtf1ansideff0 {fonttbl {f0 Monotype Corsiva;}}
qcf0fs120ib Salv\'eate,line Omn\'eas!}
کروشه نماد گروه است. در ابتدی آن عبارت rtf1 نماد نسخه 1 این فرمت است. (در حال حاضر هنوز نسخه 2 آن نیامده است)
\deff# نشان‌دهنده «شماره» فونت پیش‌فرض از جدول فونت‌هاست. در اینجا ما اعلام کردیم که فونت شماره 0 فونت پیش‌فرض ماست.
در همین ابتدای امر و در ادامه جدول فونت‌های استفاده شده در متن ذکر شده که به هر کدام هم شماره‌ای اختصاص داده می‌شود تا هرجا نیاز شد، فقط شماره فونت اعلام شود.
در صورتی که کاراکتری غیرلاتین در متن ما وجود داشته باشد (مثل فارسی) در این صورت قبل از آن عبارت \' و در ادامه کد هگز (مبنای 16) آن درج می‌شود مثل مثال بالا.
هر دستور و فرمان در RTF ها دارای ساختار منطقی است که با عبارت با قاعده‌ی \[a-z]+(-?[0-9]+)?\s? بیان می‌شود. لذا وقتی برنامه rtf خوان به عبارتی مثل \pard* برخورد می‌کنند، می‌دانند که ستاره (*) جزو فرمان نیست چون در پترن ریجکسی فوق نمی‌گنجد. در واقع شاید بتوان گفت که فرمان‌ها در rtf شبیه تگ‌ها در زبان html هستند که نوشته می‌شوند اما نمایش داده نمی‌شوند بلکه فقط استایل و موقعیت متن را تعیین می‌کنند با این تفاوت که تگ‌ها با کاراکترهای علام بزرگتر و کوچکتر قابل تشخیص هستند اما در rtf فرمان‌ها به وسیله pattern فوق قابل تشخیص هستند.
در ادامه کد نمونه فوق، تراز با عبارت \qc وسط‌چین شده است (شاید q نماد quad و به معنای چهارچوب متن باشد) و در ادامه فونت شماره صفر و همچنین سایز 60pt به آن اعمال شده و در نهایت هم فرمان مربوط به ضخیم‌شدن و کج‌شدن متن.
گفتیم که کروشه برای گروه‌بندی است. برخی گروه‌بندی‌ها (مثل تعیین جدول فونت‌ها در ابتدای امر) ضروری است و در درون متن اصلی ما، امری اختیاری است که در موارد مورد نیاز استفاده می‌شود. مثلا اگر ما بخواهیم فقط یک بخش از متن کج (italic) شود، کافی است آن را در یک گروه قرار داده و ابتدای آن کامند \i را درج کنیم. مثلا: a {\i hot} tea
فواصل خالی بین دستورات، فاقد ارزش و معناست اما در مورد متن اینطور نیست.
تعریف پاراگراف در rtf ها به صورت {\pard ... \par} انجام می‌شود (متن بجای سه نقطه درج می‌شود)
تعیین فاصله قبل (SpaceBefore) و فاصله بعد (SpaceAfter) از یک پاراگراف از دو کامند \sbN و \saN استفاده می‌شود که N عددی برحسب twips است که ای واحد در rtf کاربرد فراوانی دارد. (هر 1440 تا twips معادل 1 اینچ می‌شود)
سه دستور \fiN و \liN و \riN برای تعیین مقدار indent (فرورفتگی) متن هستند. اولی برای فرورفتگی خط اول و دو تای بعدی برای فرورفتگی سمت چپ و راست هستند.
2 دستور \rtlpar و \rtlch برای تعیین پاراگراف و کاراکتر «راست به چپ» یا همان RTL: Right To Left استفاده می‌شود.
خب فکر می‌کنم همین مقدار برای آشنایی با ساختار rtf کافی باشد. به همین ترتیب کامندهایی برای سایر کارهای متداول در ورد (مثل شکست‌صفحه، چندستونه کردن، خط حاشیه و ...) وجود دارد که علاقمندان به آشنایی بیشتر با آنها می‌توانند با مراجعه به کتاب یا کلاس فوق به این مقصود دست یابند.
جهت مطالعه بیشتر می‌توانید به مشخصات و مختصات آنلاین rtf نسخه 1.5 یا این راهنمای جدیدتر در سایت مایکروسافت نیز مراجعه نمایید.
(این مطلب ممکن است در آینده تکمیل شود ...)
یادداشت‌های مرتبط
  1. ساخت PDF آنلاین

مدیریت

نام وسیله

اعتبار ورود

نام کاربری

رمز عبور

رمز یکبارمصرف

... لیست تمام یادداشت‌ها

تبلیغات

ربات‌های تلگرامی:
مجموعه ربات‌های تلگرامی ما برای ساده‌تر کردن کار با تلگرام و مدیریت کانال
دامنه‌های فروشی:
دامنه‌های زیر مربوط به ما یا مشتریان ماست که قابل واگذاری هستند. در صورت تمایل به داشتن یکی از آنها، با این اکانت تلگرامی مکاتبه نمایید.

دامنه‌هایی که می‌تواند مصرف تخصصی داشته باشد:
AnyDesk.ir, Firebase.ir, Angularjs.ir, 9px.ir alAdmin.ir, iQore.ir notion.ir, 3dn.ir,

دامنه‌هایی که می‌تواند مصرف فرهنگی/مذهبی داشته باشد:
mavaez.ir, 2aha.ir, babolelm.ir, mahjoor.ir

دامنه‌هایی که می‌تواند مصرف شخصی/عمومی داشته باشد:
azizami.ir, 90blog.ir