با سلام خدمت همه خوانندگان گرامی تاپیک.
در این تاپیک میخوام ابزاری رو معرفی کنم که خیلی ها (من جمله خودم) دنبالش بودن یا هستن. استفاده از لاتک، معمولا برای تهیه مستندات به صورت حرفه ای توصیه میشه، اما مشکلی که هست یادگیری لاتک در مدت کوتاهه، که تقریبا امکان پذیر نیست! و نمیشه تو مدت کوتاه، لاتک رو یاد گرفت و حتی رسید به یادگیری زیپرشین و توابعی که در اون تعریف شده. اما HTML و CSS رو میشه سریع یاد گرفت. خب، برای یادگیری HTML و CSS رفرنس زیاده و با یک سرچ ساده، میشه پیداش کرد.
برنامه ای که در این تاپیک قصد معرفیش رو دارم،
WeasyPrint هست. ویزی پرینت، یک بسته پایتونی هست که امکان این رو به شما میده تا از فایلهای HTML خودتون، خروجی PDF تهیه کنید. این کار میتونه برای طراحی بهتر مجلات، کتاب ها و ... باشه. یا حتی نگه داشتن صفحه ای از یک وبسایت، که خودش امکان خروجی PDF گرفتن رو نداره.
قدم اول : نصبطبق معمول، باید یک سری پیش نیاز برای برنامه نصب کنید، دستورات زیر رو بسته به توزیع وارد ترمینال کنید :
نصب در دبیان ۷ و اوبونتو ۱۱.۱۰ به بعد :
sudo apt-get install python-dev python-pip python-lxml libcairo2 libpango1.0-0 libgdk-pixbuf2.0-0 libffi-dev shared-mime-infoنصب در دبیان ۶ و نسخه های قدیمی تر اوبونتو :
sudo apt-get install python-dev python-pip python-lxml libgtk2.0-0 libffi-devنصب در فدورا :
sudo yum install python-devel python-pip python-lxml cairo pango gdk-pixbuf2 libffi-develنصب در آرچ لینوکس :
sudo pacman -S python-pip python-lxml cairo pango gdk-pixbuf2نصب در جنتو :
emerge weasyprintخب، پس از اینها، نوبت نصب خود برنامه است!
sudo pip install WeasyPrintحالا برنامه نصب شده! بریم سراغ سوییچ ها و آپشن هاش!
قدم دوم : آشنایی با آپشن های برنامهخب، این برنامه ترمینالی هست و یه سری آپشن داره. در اینجا اونا رو توضیح میدم :
-h, --helpآپشن فوق، یک کمک کوچک در مورد سایر آپشن ها به شما میده، و میگه که هر آپشنی چه کار میکنه.
--versionآپشن بالا، نسخه مورد استفاده رو نشونتون میده (با این، میتونید چک کنید که نسخه مورد استفاده شما، چقدر با اون چیزی که در وبسایتش معرفی شده، تفاوت داره!).
خب، از اینجا به بعد، آپشن هایی که برای ما مهم هستن و خروجی ما، به اونا بستگی داره رو معرفی میکنم :
-e ENCODING, --encoding ENCODINGآپشن بالا، یک ورودی داره که انکودینگ ورودی رو تنظیم میکنه، مثلا به جای ENCODING میتونید بنویسید UTF-8 ، اگر ورودیتون رو با این انکودینگ نوشتید.
-f {pdf, png} , --format {pdf,png}با آپشن بالا، میتونید فرمت خروجی رو تنظیم کنید، و فقط دوتا ورودی قابل قبول داره، pdf و png .
-s STYLESHEET, --stylesheet STYLESHEETاین آپشن یک فایل CSS رو به عنوان ورودی دریافت میکنه، و هرچیزی اونجا تعریف کردید، روی خروجی اعمال میشه

-m MEDIA_TYPE, --media-type MEDIA_TYPEاین یکی، نوع رسانه ای که درون @media در فایل CSS تعریف شده رو ازتون میخواد.
-r RESOLUTION, --resolution RESOLUTIONاین هم رزولوشن خروجی رو ازتون میخواد، کاملا مشخصه.
--base-url BASE_URLاین یکی ، یک آدرس میگیره از فایلهای مربوط به ورودی، که درون یک سرور دیگر هستن!
-a ATTACHMENT, --attachment ATTACHMENTاین هم فایلی که قراره به خروجی پیوست بشه رو به عنوان ورودی قبول میکنه!!
چند مثال: خب دو مثال کافیه.
مثال اول : فرض میکنیم درون خود HTML همه چیز مشخصه، هم شیوه نامه (استایل شیت)، هم انکدینگ. دیگه هیچ سختی و مشقتی لازم نیست
به این شکل :
weasyprint input.html output.pdfمثال دوم : اینجا فرض میکنیم ما یه شیوه نامه داریم به اسم foo.css و میخوایم فرمت PDF ذخیره کنیم، همچنین فایل ورودی bar.html نام داره، و ما هم میخوایم با انکدینگ UTF-8 خروجی بگیریم
weasyprint -e UTF-8 -s foo.css -f pdf bar.html bar.pdfو اونقدری طول نمیکشه تا ما نتیجه رو دریافت کنیم.
هرگونه سوالی بود، در خدمتم
