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

ایجاد فایل PDF و بارگیری در ASP.Net MVC
0 0
ایجاد فایل PDF و بارگیری در ASP.Net MVC

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

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

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

از پنجره Add New Article ، ADO.NET Entity Data Model را انتخاب کنید و نام آن را NorthwindModel بگذارید و سپس بر روی Add کلیک کنید.

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

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

شما باید انتخاب کنید
1. مثال SQL Server
2. بانک اطلاعاتی
و سپس بر روی Test Connection کلیک کنید تا مطمئن شوید که تمام تنظیمات صحیح است.

پس از ایجاد اتصال ، روی دکمه Next کلیک کنید تا به مرحله بعدی بروید.

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

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

اکنون باید جدول Entity Data Model را با جدول Customers of the Northwind Database آماده کنید.

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

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

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

با ارسال پیش فرض محتوای HTML از طریق فیلدهای ورودی که به طور پیش فرض غیرفعال است
HTML با استفاده از یک شیء از کلاس StringReader فراخوانی و سپس به روش ParseXHtml از شیء کلاس XMLWorkerHelper تبدیل می شود که آن را به سند PDF تبدیل و در شی کلاس MemoryStream ذخیره می کند.
سرانجام شی کلاس MemoryStream به بایت آرایه تبدیل شده و با استفاده از عملکرد 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 کلیک می کنید.
Name of View بر روی Index ، گزینه Template روی Empty و کلاس Model بر روی Customer Entity تنظیم شده است (موردی که ما با استفاده از Entity Framework ایجاد کرده ایم) و در آخر کلاس متن داده ها روی NorthwindEntities تنظیم می شود.

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

@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>

عکسهای صفحه
شبکه (جدول Html)

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

 


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

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