خروجی GridView به PDF

چهارشنبه 7 اسفند 1392

استفاده از گریدویو (GridView) برای تهیه گزارشات ساده کاری است که در بین برنامه نویسان ASP.NET بسیار متداول است.

خروجی GridView به PDF

مقدمه:

استفاده از گریدویو (GridView) برای تهیه گزارشات ساده کاری است که در بین برنامه نویسان ASP.NET بسیار متداول است. برای تهیه خروجی از گریدویو به Excel و Word مقالات زیادی نوشته شده است که با یک جستجوی ساده نمونه های زیادی خواهید دید. یکی از فرمتهای متداولی که برنامه نویسان برای تهیه گزارش از آن استفاده می کنند، فرمت PDF است و طبیعتا برای تهیه خروجی به PDF نیز روشهای مختلفی ارایه شده که متاسفانه هیچ یک از آنها (تا جایی که من تست کرده ام) برای متون فارسی قابل استفاده نیست.
برای حل این مساله من با استفاده از iTextSharp یک کتابخانه برای تبدیل گریدویو به PDF (برای متون فارسی) تهیه کرده ام که در اینجا ارایه خواهم داد. این کتابخانه توانایی تبدیل گریدویو به PDF با حفظ استایل های داده شده به گریدویو را دارد.

از آنجایی که روش کلی استفاده از iTextSharp به همراه متون فارسی و همچنین یک مثال ساده تهیه خروجی از گریدویو را قبلا بیان کرده ام، در اینجا فقط نحوه استفاده از این کتابخانه را توضیح میدهم و از توضیح بیشتر درباره iTextSharp خودداری میکنم.
روش استفاده:

برای استفاده از این کتابخانه، ابتدا یک ارجاع به کتابخانه (iTextSharp (itextsharp.dll و همچنین کتابخانه ارایه شده در اینجا (GridToPdf.dll) به پروژه خود اضافه کنید و فضای نام Hasheminezhad را به کد خود اضافه کنید.

سپس با استفاده از کلاس GridToPdf میتوانید عملیات تبدیل گریدویو به PDF را انجام دهید. در این کلاس دو متد به نامهای Convert و Download وجود دارند.
با استفاده از متد Download میتوانید مستقیما خروجی GridView را برای کاربر ارسال کنید. تنها پارامتر ورودی الزامی این تابع، نام گریدویو است.

پس از اجرای این دستور، در صورتی که پلاگینهای نمایش PDF در مرورگر کاربر نصب شده باشد، فایل PDF را در مرورگر خود مشاهده خواهد کرد و در غیر اینصورت، فایل PDF برای دانلود ارسال خواهد شد.
در صورت تمایل میتوانید نام مورد نظر برای ذخیره فایل را به عنوان پارامتر دوم به این تابع ارسال کنید. در این حالت حتی در صورتی که مرورگر امکان نمایش فایل PDF را نیز داشته باشد، آن را در مرورگر باز نکرده و با نام ذکر شده برای دانلود ارسال خواهد کرد.

دقت کنید که برای اجرای صحیح متد Download، باید حتما صفحه PostBack کامل شده باشد. بنابراین اگر دانلود کردن PDF قرار است از طریق دکمه ای در داخل UpdatePanel انجام پذیرد، حتما این دکمه را به PostBackTrigger های UpdatePanel اضافه کنید.

متد دیگر موجود در این کلاس، متد Convert است که در ساده ترین حالت خود بجز نام گریدویو، نام فایل مورد نظر را دریافت کرده و محتوای فایل PDF را در سرور (و در آدرس ذکر شده) ذخیره خواهد کرد.

استفاده از GridView صفحه بندی شده
در صورتی که گریدویو دارای صفحه بندی باشد و همچنین DataBind شدن گریدویو را از طریق کدنویسی انجام داده شده باشد (و نه از طریق کنترلهایی مانند ObjectDataSource)، لازم است که حتما قبل از فراخوانی متدهای تبدیل به PDF، ویژگی DataSource مربوط به گریدویو مقدار داشته باشد. در غیر اینصورت، تنها امکان ارسال اطلاعات صفحه جاری به فایل PDF وجود خواهد داشت.

 

نمونه هم ضمیمه شده است

امیدوارم خوشتون بیاد

باتشکر از مهندس مهدی هاشمی نژاد

 

فایل های ضمیمه

ایمان مدائنی

نویسنده 1299 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید