تبدیل pdf به تصویر توسط GhostScript
اندازه‌ی قلم متن
تخمین مدت زمان مطالعه‌ی مطلب: یک دقیقه

در  مطلبی که در همین سایت اشاره شد با استفاده از Adobe Acrobat می‌توان فایل‌های pdf  را به تصویر تبدیل کرد اما چون نیاز بود تا در وب از آن استفاده کنیم و گاهی اوقات امکان نصب Adobe Acrobat Sdk در سرور وجود ندارد می‌توان از روش زیر نیز استفاده کرد.

ابتدا فایل gsdll32.dll را در پوشه bin  پروژه کپی کنید ( این فایل به همراه مثال ارائه شده وجود دارد).

سپس برای متدهای موردنیاز موجود در Api که بصورت Unmanaged می‌باشند یکسری wrapper ایجاد میکنیم. این متدها شامل :

  1. gsapi_new_instance که برای ایجاد یک نمونه جدید از api بکار می‌رود.
  2.  gsapi_init_with_args که برای مقداردهی نمونه ایجاد شده بوسیله آرگومان‌ها بکار می‌رود .
  3. gsapi_delete_instance  و  gsapi_exit برای آزادسازی منابع ایجاد شده. 

در زیر چند آرگومان مهم که باید به api ارسال شوند نیز آمده است:

 -sDEVICE  فرمت تصویر خروجی 
 dFirstPage-  صفحه آغازین برای تبدیل 
dLastPage -  صفحه پایانی برای تبدیل 
dDEVICEWIDTHPOINTS-  اندازه width فایل pdf 
dDEVICEHEIGHTPOINTS- اندازه height فایل pdf
 dDEVICEXRESOLUTION-  resolutionX
-dDEVICEYRESOLUTION  resolutionY
sOutputFile- مسیر فایل(های) خروجی 
  مسیر فایل ورودی 
نکته اول : برای حالتی که قصد دارید بیش از یک صفحه از فایل pdf را به تصویر تبدیل کنید، کافیست در هنگام مقداردهی به پارامتر –sOutputFile درهرکجای آن علامت %d را قرار دهید تا بطور خودکار شمارنده ای برای نام فایل‌ها در نظر گرفته شود. بطور مثال img%d باعث می‌شود که تصاویر تولید شده بصورت img1 و img2 و img3 و غیره ایجاد شوند.
 
نکته دوم :
هنگامی که خواستم از این api درون وب استفاده کنم و از آنجا که سیستم عامل windows server 2008 x64 روی سرور نصب بود موقع دریافت خروجی با خطای زیر مواجه می‌شدم:

BadImageFormatException: An attempt was made to load a program with an incorrect format. Exception from HRESULT: 0x8007000B

برای حل این مشکل IIS  را باز میکنیم و بر روی ApplicationPool ای که برای وب سایت خودمان درنظر گرفتیم کلیک راست کرده و گزینه Advanced Setting را انتخاب میکنیم. با باز شدن این دیالوگ گزینه Enable 32-bit Application را به true تنظیم میکنیم. 

پروژه کامل این مثال 

  • #
    ‫۱۱ سال و ۶ ماه قبل، یکشنبه ۲۵ فروردین ۱۳۹۲، ساعت ۱۷:۱۴
    ممنون. تست نکردم ولی به نظر نسخه 64 بیتی مخصوص هم داره. اینجا
  • #
    ‫۱۱ سال و ۶ ماه قبل، دوشنبه ۲۶ فروردین ۱۳۹۲، ساعت ۰۵:۵۰
    سلام
    ممنون از آموزش خیلی خوب و کاربردیتان!
    یک سوالی
    چگونه می‌توان به متدهای موجود در یک فایل دی ال ال آن هم از نوع Unmanaged  پی برد؟
     و اینکه هر کدام از این متدها چه پارامترهایی می‌گیرند؟
    با تشکر
    • #
      ‫۱۱ سال و ۶ ماه قبل، دوشنبه ۲۶ فروردین ۱۳۹۲، ساعت ۰۵:۵۳
      پروژه GhostScript سورس باز هست. بنابراین میشه فایل هدرهای C اون رو مشاهده و ترجمه کرد.