با سلام خدمت همه خوانندگان گرامی تاپیک.
در این تاپیک میخوام ابزاری رو معرفی کنم که خیلی ها (من جمله خودم) دنبالش بودن یا هستن. استفاده از لاتک، معمولا برای تهیه مستندات به صورت حرفه ای توصیه میشه، اما مشکلی که هست یادگیری لاتک در مدت کوتاهه، که تقریبا امکان پذیر نیست! و نمیشه تو مدت کوتاه، لاتک رو یاد گرفت و حتی رسید به یادگیری زیپرشین و توابعی که در اون تعریف شده. اما 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
و اونقدری طول نمیکشه تا ما نتیجه رو دریافت کنیم.
هرگونه سوالی بود، در خدمتم