توضیحات و دانلود

خروج داده های Grid (Html Table) از پایگاه داده به فایل PDF با استفاده از iTextSharp در ASP.Net MVC
0 0
خروج داده های Grid (Html Table) از پایگاه داده به فایل PDF با استفاده از iTextSharp در ASP.Net MVC

با سلام در این مقاله با یک مثال توضیح خواهیم داد که چگونه داده های Grid (Table Html) را از پایگاه داده به PDF با استفاده از فایل iTextSharp در ASP.Net MVC Razor تبدیل کنیم.
ابتدا Grid (Table Html) از پایگاه داده با استفاده از چارچوب Entity پوشیده می شود و پس از آن رگورد ها از پایگاه داده با استفاده از iTextSharp XMLWorkerHelper در ASP.Net MVC Razor به عنوان فایل PDF تبدیل می شوند.
بانک اطلاعاتی
در اینجا از پایگاه Northwind استفاده می کنیم. شما می توانید آن را از اینجا دانلود کنید.
پایگاه داده Northwind را دانلود و نصب کنید
نصب و اضافه کردن مرجع کتابخانه iTextSharp XMLWorkerHelper
برای نصب و اضافه کردن مرجع کتابخانه ITextSharp XMLWorkerHelper، شما باید :
1.  بر روی پروژه در Solution Explorer راست کلیک کرده و روی Manage NuGet Packages از منوی Context کلیک کنید.

2. حالا شما باید بسته iTextSharp XMLWorker را جستجو کنید و آن را پیدا کنید، باید دکمه Install را کلیک کنید .

پیکربندی و اتصال چارچوب Entity به پایگاه داده
حالا مراحل را برای پیکربندی و اضافه کردن چارچوب Entity و نیز نحوه اتصال آن با پایگاه داده توضیح خواهیم داد.
شما نیاز دارید کهEntity Data Model را به پروژه خود اضافه کنید بر روی Solution Explorer راست کلیک کنید و سپس بر روی گزینه افزودن و بعد گزینه New Item از منوی زمینه کلیک کنید.

از پنجره افزودن آیتم جدید،  ADO.NET Entity Data Model را انتخاب کرده و نام خود را به عنوان NorthwindModel تنظیم کنید و سپس روی افزودن کلیک کنید.

سپس داده Entity Data Model Wizard باز خواهد شد و در آنجا باید گزینه EF Designer database را انتخاب کنید.

در حال حاضر Wizard از شما میخواهد که اتصال و پیکربندی روتر اتصال را به پایگاه داده متصل کنید.

شما باید انتخاب کنید
1. SQL Server Instance
2. Database
و سپس روی Test Connection کلیک کنید تا مطمئن شوید تمام تنظیمات درست است.

هنگامی که رشته اتصال ایجاد می شود، روی دکمه Next کلیک کنید تا به مرحله بعدی بروید.

بعد شما باید نسخه Entity Framework را برای اتصال استفاده کنید.

حالا شما باید جدول هایی را که نیاز دارید برای اتصال و کار با چارچوب Entity را انتخاب کنید . جدول مشتریان اینجا انتخاب شده است.

فضاهای نام
شما باید فضای نامهای زیر را وارد کنید.

using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.tool.xml;
using iTextSharp.text.html.simpleparser;

Controller
Controller متشکل از دو روش است.
روش دست زدن به عملیات GET
در داخل این روش ، سوابق 10 مشتری برتر جمع آوری شده و به View باز می گردند.
روش مدیریت خروج فایل PDF و دانلود
هنگامی که دکمه Export Submit کلیک می شود، این روش  اجرا می شود.
توجه :

روش زیر اقدام به دانلود فایل می کند و از این رو نوع بازگشت به FileResult تنظیم شده است.
HTML Grid ارسال شده از View از پارامتر GridHtml دریافت می شود.
توجه :

به طور پیش فرض ارسال محتویات HTML از طریق زمینه های ورودی غیرفعال است.
HTML با استفاده از یک شیء از کلاس StringReader خواندن را انجام می دهد و سپس به روش ParseXHtml از کلاس XMLWorkerHelper  آن را به سند PDF تبدیل می کند و به شیء کلاس MemoryStream ذخیره و خوانده می شود.
در نهایت شیء کلاس MemoryStream به Byte Array تبدیل می شود و با استفاده از تابع File به فایل PDF تبدیل می شود.

public class HomeController : Controller
{
    // GET: Home
    public ActionResult Index()
    {
        NorthwindEntities entities = new NorthwindEntities();
        return View(from customer in entities.Customers.Take(10)
                    select customer);
    }
 
    [HttpPost]
    [ValidateInput(false)]
    public FileResult Export(string GridHtml)
    {
        using (MemoryStream stream = new System.IO.MemoryStream())
        {
            StringReader sr = new StringReader(GridHtml);
            Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 100f, 0f);
            PdfWriter writer = PdfWriter.GetInstance(pdfDoc, stream);              
            pdfDoc.Open();
            XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, sr);
            pdfDoc.Close();
            return File(stream.ToArray(), "application/pdf", "Grid.pdf");
        }
    }
}

View
در حال حاضر شما باید در داخل کلاس Controller راست کلیک کنید و بر روی گزینه Add View کلیک کنید تا یک View برای Controller ایجاد شود.
نام View به Index و گزینه Template به Empty تنظیم شده است، کلاس Model به Entity Customer (که ما با استفاده از Entity Framework ایجاد کرده ایم) و در نهایت کلاس context Data به NorthwindEntities تنظیم شده است.

درون View ، در خط اول، Entity مشتری به عنوان IEnumerable اعلام می شود که مشخص می کند که آن به صورت مجموعه در دسترس خواهد بود.
برای سوابق View ، یک جدول HTML استفاده می شود. یک حلقه بر روی Model اجرا که ردیف جدول HTML را با سوابق مشتری تولید می کند.
یک فیلد پنهان HTML وجود دارد که برای ارسال محتوای HTML Grid به روش Action Controller استفاده می شود.
در نهایت یک دکمه ارسال HTML وجود دارد که درون یک فرم با روش Action مشخص شده به عنوان خارج شده است .
هنگامی که روی این دکمه کلیک می شود ابتدا HTML جدول (Html Table) دریافت شده و در فیلد پنهان قرار می گیرد و در نهایت فرم ارسال شده است .

@model IEnumerable<Export_PDF_MVC.Customer>
 
@{
    Layout = null;
}
 
<!DOCTYPE html>
 
<html>
<head>
    <meta name="viewport" content="width=device-width"/>
    <title>Index</title>
    <style type="text/css">
        body {
            font-family: Arial;
            font-size: 9pt;
        }     
    </style>
</head>
<body>
    <h4>Customers</h4>
    <hr/>
    <div id="Grid">
        <table cellpadding="5" cellspacing="0" style="border: 1px solid #ccc;font-size: 9pt;">
            <tr>
                <th style="background-color: #B8DBFD;border: 1px solid #ccc">CustomerID</th>
                <th style="background-color: #B8DBFD;border: 1px solid #ccc">ContactName</th>
                <th style="background-color: #B8DBFD;border: 1px solid #ccc">City</th>
                <th style="background-color: #B8DBFD;border: 1px solid #ccc">Country</th>
            </tr>
            @foreach (Customer customer in Model)
            {
                <tr>
                    <td style="width:120px;border: 1px solid #ccc">@customer.CustomerID</td>
                    <td style="width:120px;border: 1px solid #ccc">@customer.ContactName</td>
                    <td style="width:120px;border: 1px solid #ccc">@customer.City</td>
                    <td style="width:120px;border: 1px solid #ccc">@customer.Country</td>
                </tr>
            }
        </table>
    </div>
    <br/>
    <br/>
    @using (Html.BeginForm("Export", "Home", FormMethod.Post))
    {
        <input type="hidden" name="GridHtml"/>
        <input type="submit" id="btnSubmit" value="Export"/>
    }
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <script type="text/javascript">
        $(function () {
            $("#btnSubmit").click(function () {
                $("input[name='GridHtml']").val($("#Grid").html());
            });
        });
    </script>
</body>
</html>

عکسها
Grid (Html Table)

فایل PDF خارج شده

 


دانلود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

ارسال نظر
ارسال پیام به :