انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: تهیه خروجی PDF از فایلهای HTML  (دفعات بازدید: 3718 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین محمدرضا ح.

  • High Hero Member
  • *
  • ارسال: 3117
  • جنسیت : پسر
  • Your Future is our Past!
تهیه خروجی PDF از فایلهای HTML
« : 01 دی 1393، 01:07 ب‌ظ »
با سلام خدمت همه خوانندگان گرامی تاپیک.
در این تاپیک میخوام ابزاری رو معرفی کنم که خیلی ها (من جمله خودم) دنبالش بودن یا هستن. استفاده از لاتک، معمولا برای تهیه مستندات به صورت حرفه ای توصیه میشه، اما مشکلی که هست یادگیری لاتک در مدت کوتاهه، که تقریبا امکان پذیر نیست! و نمیشه تو مدت کوتاه، لاتک رو یاد گرفت و حتی رسید به یادگیری زی‌پرشین و توابعی که در اون تعریف شده. اما 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 همه چیز مشخصه، هم شیوه نامه (استایل شیت)، هم انکدینگ. دیگه هیچ سختی و مشقتی لازم نیست :D

به این شکل :
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
و اونقدری طول نمیکشه تا ما نتیجه رو دریافت کنیم.

هرگونه سوالی بود، در خدمتم :)
قاضی : تو السالوادور چه کار میکردی؟
چه‌گوارا : آفتاب میگرفتم
قاضی : پس چرا ساختمان دادگستری رو منفجر کردی؟
چه‌گوارا : جلوی آفتاب رو گرفته بود

آفلاین hamed_ubuntu

  • Sr. Member
  • *
  • ارسال: 251
  • جنسیت : پسر
  • linuxforlife.ir
    • لینوکس برای زندگی
پاسخ : تهیه خروجی PDF از فایلهای HTML
« پاسخ #1 : 01 دی 1393، 10:36 ب‌ظ »
محمد جان دستت درد نکنه.مطلب خوب و به درد بخوری بود.منتظر همچین مقالاتی ازت هستیم.
تا میتونم باید تلاش کنم.همین

آفلاین امیرحسین گودرزی

  • ناظر انجمن
  • *
  • ارسال: 743
  • جنسیت : پسر
  • Devops engineer and AI enthusiastic
پاسخ : تهیه خروجی PDF از فایلهای HTML
« پاسخ #2 : 02 دی 1393، 12:22 ق‌ظ »
سلام

شیوه‌نامه رو باید جداگانه بشناسونیم بهش ؟(مثال آخری)

اگه مثلاً توی خود فایل html بهش لینک بدیم این ویزی پرینت نمی‌شناستش؟


آفلاین محمدرضا ح.

  • High Hero Member
  • *
  • ارسال: 3117
  • جنسیت : پسر
  • Your Future is our Past!
پاسخ : تهیه خروجی PDF از فایلهای HTML
« پاسخ #3 : 02 دی 1393، 01:28 ق‌ظ »
سلام

شیوه‌نامه رو باید جداگانه بشناسونیم بهش ؟(مثال آخری)

اگه مثلاً توی خود فایل html بهش لینک بدیم این ویزی پرینت نمی‌شناستش؟

چرا میشناسه، مثال اول با همین فرض کار میکنه :).
قاضی : تو السالوادور چه کار میکردی؟
چه‌گوارا : آفتاب میگرفتم
قاضی : پس چرا ساختمان دادگستری رو منفجر کردی؟
چه‌گوارا : جلوی آفتاب رو گرفته بود

آفلاین محمدرضا ح.

  • High Hero Member
  • *
  • ارسال: 3117
  • جنسیت : پسر
  • Your Future is our Past!
پاسخ : تهیه خروجی PDF از فایلهای HTML
« پاسخ #4 : 06 دی 1393، 02:59 ب‌ظ »
تاپیک رو میارم بالا، که فقط یک نکته رو بگم.
درسته که نرم افزار چاپ و نشر آزادی نداریم که بشه با استفاده از اون، مجله ای مثل سلام دنیا رو ارائه کرد، ولی میشه با HTML و CSS موقتا یک چیز خوب درست کرد و داد دست مردم!
قاضی : تو السالوادور چه کار میکردی؟
چه‌گوارا : آفتاب میگرفتم
قاضی : پس چرا ساختمان دادگستری رو منفجر کردی؟
چه‌گوارا : جلوی آفتاب رو گرفته بود

آفلاین ح.م

  • High Hero Member
  • *
  • ارسال: 1274
  • جنسیت : پسر
  • دین بدون خرد مانند خرد بدون دین بی معناست
پاسخ : تهیه خروجی PDF از فایلهای HTML
« پاسخ #5 : 06 دی 1393، 03:39 ب‌ظ »
می تونه یه ایده کاملا خوب باشه واسه مجله  ;)
عاقبت انحصار شکست و سرانجام کمونیسم گنویی دیکتاتوریست !
الگوی متن باز از هر جهت بر الگوی نرم افزار آزاد رجحان دارد
وَسَيَعْلَمُ الَّذِينَ ظَلَمُوا أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ