تبدیل Markdown به PDF بدون از دست دادن سند
Markdown برای نمایش در صفحهای که اسکرول میشود نوشته شده است. اما PDF صفحات دارد و هر صفحه لبههایی مشخص. بیشتر مبدلها این تفاوت را نادیده میگیرند: فایل را به مرورگر میسپارند، چاپ میگیرند و هرچه بیرون آمد را برمیگردانند. به همین دلیل است که جدولها ستونهای آخرشان را از دست میدهند، یک عنوان در انتهای صفحه گیر میافتد، و لوگوی بالای README به صورت یک خط HTML خام به شکل متن چاپ میشود. این ابزار ابتدا سند را برای چاپ روی کاغذ چیدمان میکند و سپس به شما میگوید برای رسیدن به این نتیجه چه کارهایی انجام داده است.
جدولهایی که داخل کاغذ میمانند
جدول Markdown هیچ اطلاعاتی درباره عرض ستونها ندارد. این امکان در سینتکس آن وجود ندارد، پس مبدلی که جدول را مستقیم به مرورگر میفرستد فقط امیدوار است که جدول جا شود. در اینجا هر جدول قبل از رسم شدن اندازهگیری و متناسب با کاغذ انتخابی شما تنظیم میشود. حتی جدولی با چهارده ستون مسیر فایل، باز هم داخل حاشیهها قرار میگیرد و مقادیر طولانی به جای خروج از صفحه، به خط بعد میروند. در نتیجه، مشخص میشود که برای جا دادن جدول چه تغییراتی انجام شده است.
نیمه پنهان مشکل در صفحه دوم رخ میدهد. یک جدول طولانی معمولاً ردیف عنوان خود را در صفحه اول جا میگذارد و خواننده با جدولی از اعداد بیبرچسب روبرو میشود. در اینجا ردیف عنوان در هر صفحهای که جدول ادامه دارد تکرار میشود و هیچ ردیفی با شکست صفحه نصف نمیشود.
کدهایی که از حاشیه جان سالم به در میبرند
کدهای محصورشده (fenced code) با برجستهسازی سینتکس و برچسب زبان خود باقی میمانند. خطوط طولانی به گونهای به خط بعد میروند که مشخص باشد شکسته شدهاند، نه اینکه جایی که کاغذ تمام میشود قطع شوند. PDF اسکرولبار ندارد، پس خطی که نشکند، سمت راستش حذف میشود. بلوکهای تورفتگیدار، کدهای محصور بدون زبان و کدهای خطی همگی به همان شکل اصلی خود نمایش داده میشوند.
تصاویر README شما
لوگو و ردیفی از نشانهای ساخت (build badges) تقریباً هیچوقت در Markdown نوشته نمیشوند. راهی برای وسطچین کردن تصویر در آن نیست، پس فایلهای README معمولاً از HTML خام استفاده میکنند. مبدلی که HTML را رندر نمیکند، معمولاً آن را escape میکند تا حذف نشود، که نتیجهاش نمایش تگهای تصویر به صورت متن است. در اینجا نشانهگذاری حذف میشود و تصاویر و متون داخل آن حفظ میشوند تا بالای سند همانطور که باید نمایش داده شود.
تصاویر دانلود و در فایل جاسازی میشوند، نه اینکه فقط لینک شوند؛ بنابراین PDF حتی به صورت آفلاین و سال بعد هم کار میکند. اگر تصویری قابل دریافت نباشد، نتیجه تعداد آنها را اعلام میکند و به جای اینکه بیسر و صدا جای خالی بگذارد، به شما اطلاع میدهد.
عناوین شما تبدیل به ناوبری میشوند
هر PDF یک ساختار بوکمارک از عناوین شما میسازد تا سندهای طولانی را بتوانید از نوار کناری مرور کنید، نه فقط با اسکرول. اگر صفحه فهرست بخواهید، یک فهرست قابل کلیک هم دریافت میکنید، با هر عمقی که انتخاب کنید. یک عنوان در بالاترین سطح به عنوان عنوان سند خوانده میشود و از فهرست حذف میشود، درست مانند عنوان کتاب نه یک فصل.
پاورقیها به صورت پاورقی باقی میمانند، با نشانه بالا و لینک برگشت به خطی که در حال خواندنش بودید. لیستهای وظیفه با جعبههای تیکخورده و تیکنخورده حفظ میشوند. یادداشت، هشدار و نکتهها رنگ خود را نگه میدارند. اطلاعات ابتدایی فایل (front matter) به عنوان متادیتا پردازش میشود و در صفحه ظاهر نمیشود. لیستهای تعریفی، خطخوردگی، نقلقولهای تو در تو و سه سطح لیست تو در تو همگی به همان شکل اصلی خود نمایش داده میشوند.
به شما میگوید چه کارهایی را نتوانسته انجام دهد
هر تبدیل با گزارشی کوتاه برمیگردد: تعداد صفحات، جهت متن، تعداد جدولها، تعداد بلوکهای کد، تعداد تصاویر جاسازیشده و تعداد تصاویری که قابل دریافت نبودهاند. اگر فونتی کاراکتری را نداشته باشد، آن کاراکتر را لیست میکند. اگر صفحه فهرست خواسته باشید و سند عنوانی برای آن نداشته باشد، به شما اطلاع میدهد تا یک صفحه خالی تحویل نگیرید. مبدلی که شکستهای خود را پنهان کند، باعث بیاعتمادی کاربران میشود.
اسکریپتهایی که لاتین نیستند
فونتها داخل PDF قرار میگیرند تا سند روی هر دستگاهی یکسان باز شود، حتی اگر آن فونتها نصب نباشند. متن راست به چپ به صورت بلوک به بلوک تشخیص داده میشود، نه یکباره برای کل فایل؛ چون اسناد فنی در این اسکریپتها معمولاً نیمی لاتین هستند، پر از مسیر فایل و نام کلاس، اما همچنان راست به چپ خوانده میشوند. کدهای محصور از این قاعده مستثنا هستند و همیشه چپ به راست نمایش داده میشوند و بقیه چیدمان به درستی معکوس میشود: بولتها، خطوط نقلقول و ستونهای جدول جابجا میشوند. جایی که اسکریپت ایتالیک ندارد، تأکید به صورت ضخامت نمایش داده میشود، نه با کج کردن حروفی که اصلاً برای کج شدن طراحی نشدهاند.
چه کارهایی انجام نمیدهد
LaTeX رندر نمیشود. بلوکی بین علامت دلار به همان صورت متن چاپ میشود. Mermaid هم رسم نمیشود: بلوکی با برچسب mermaid به صورت یک بلوک کد با برچسب نمایش داده میشود. زبانهای چینی، ژاپنی و کرهای خارج از فونتهای ابزار هستند، پس کاراکترهای این اسکریپتها به عنوان مفقود گزارش میشوند، نه اینکه حدس زده شوند. اینها محدودیت هستند، نه نقص، و اینجا نوشته شدهاند تا کسی بعد از آپلود غافلگیر نشود.
بخش عملی
از دستگاه خود، Google Drive یا با چسباندن لینک فایل آپلود کنید. فایلهای Markdown با هر پسوند رایج پذیرفته میشوند، همچنین متن ساده. کاغذ میتواند A3، A4، A5، Letter، Legal یا Tabloid باشد، عمودی یا افقی، با حاشیه باریک، معمولی یا پهن. شماره صفحات و برجستهسازی سینتکس فعال است مگر اینکه خاموششان کنید. یک فایل ارسال کنید و یک PDF دریافت میکنید؛ چند فایل ارسال کنید و آنها را به صورت ZIP یا یک PDF ادغامشده با شماره صفحات پیوسته تحویل میگیرید اگر این گزینه را انتخاب کنید. متن به صورت واقعی باقی میماند، پس قابل انتخاب، جستجو و کپی است، نه اینکه به تصویری از کلمات تبدیل شود.
چه چیزی دریافت میکنید
- جدولهایی که داخل حاشیه باقی میمانند و ردیف عنوان آنها در هر صفحه تکرار میشود
- کد با برجستهسازی سینتکس و خطوط طولانی که به جای قطع شدن، به خط بعد میروند
- تصاویر جاسازیشده در فایل، حتی آنهایی که با HTML خام نوشته شدهاند
- ساختار بوکمارک از عناوین شما و صفحه فهرست قابل کلیک در صورت نیاز
- فونتهایی که داخل PDF قرار دارند تا فایل روی هر دستگاهی یکسان دیده شود
- گزارش مکتوب از هر چیزی که مبدل نتوانسته انجام دهد، از جمله نویسهها و تصاویر مفقود
گام بعدی چیست؟
از فایل Word کار میکنید؟ تبدیل Word به PDF همین مسیر را تا چاپ طی میکند. نتیجه را با بقیه گزارش با استفاده از ادغام PDF ترکیب کنید. سپس قبل از ارسال، حجم فایل را با فشردهسازی PDF کاهش دهید.