افزودن داده ها از پایگاه داده به PDF در سی شارپ

پایگاه های داده تقریباً همه جا برای ذخیره و مدیریت داده ها هستند. این یک رویه معمول برنامه نویسان است که داده ها را از پایگاه های داده بازیابی کرده و در برنامه ها بارگذاری کنند. هنگام تولید فایل‌های PDF به صورت برنامه‌ای، ممکن است نیاز باشد که سند را با داده‌های موجود در پایگاه داده پر کنید. برای انجام این کار در برنامه‌های NET، این مقاله نحوه افزودن داده‌ها از پایگاه داده به فایل‌های PDF در سی شارپ را نشان می‌دهد.

C# .NET API برای افزودن داده ها از پایگاه داده به PDF

ما از Aspose.PDF برای NET برای افزودن داده ها از پایگاه داده به فایل های PDF استفاده خواهیم کرد. این یک API تولید و دستکاری PDF محبوب است که به شما امکان می دهد فایل های PDF را با طرح بندی های ساده و پیچیده به طور یکپارچه ایجاد کنید. می توانید باینری های API را دانلود یا با استفاده از NuGet نصب کنید.

PM> Install-Package Aspose.PDF

افزودن اطلاعات از پایگاه داده به PDF در سی شارپ

در بیشتر موارد، داده ها از یک جدول پایگاه داده به یک DataTable یا DataView واکشی می شوند. بنابراین، برای نمایش، از DataTable برای افزودن داده به فایل PDF استفاده می کنیم. برای ساده‌تر کردن کارها، ما DataTable را به صورت برنامه‌نویسی و بدون استفاده از پایگاه داده ایجاد و پر می‌کنیم. مراحل زیر برای افزودن داده به فایل PDF از پایگاه داده در سی شارپ است.

  • داده ها را در یک DataTable از پایگاه داده بارگیری کنید.
  • با استفاده از کلاس Document یک PDF جدید ایجاد کنید یا فایل موجود را بارگیری کنید.
  • یک نمونه از کلاس Table ایجاد کنید و ویژگی های آن را تنظیم کنید، یعنی عرض ستون، حاشیه ها و غیره.
  • با استفاده از روش Table.ImportDataTable() داده ها را از پایگاه داده به جدول PDF وارد کنید.
  • جدول را با استفاده از روش Document.Pages[index].Paragraphs.Add(Table) به صفحه اضافه کنید.
  • فایل PDF را با استفاده از روش Document.Save(string) ذخیره کنید.

نمونه کد زیر نحوه وارد کردن داده ها از پایگاه داده به PDF در سی شارپ را نشان می دهد.

// داده ها را از پایگاه داده به DataTable دریافت کنید
DataTable dt = new DataTable("Employee");
dt.Columns.Add("Employee_ID", typeof(Int32));
dt.Columns.Add("Employee_Name", typeof(string));
dt.Columns.Add("Gender", typeof(string));

// 2 ردیف به شی DataTable به صورت برنامه نویسی اضافه کنید
DataRow dr = dt.NewRow();
dr[0] = 1;
dr[1] = "John Smith";
dr[2] = "Male";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 2;
dr[1] = "Mary Miller";
dr[2] = "Female";
dt.Rows.Add(dr);

// ایجاد نمونه سند
Document doc = new Document();
doc.Pages.Add();

// نمونه جدیدی از جدول را راه اندازی می کند
Aspose.Pdf.Table table = new Aspose.Pdf.Table();

// عرض ستون های جدول را تنظیم کنید
table.ColumnWidths = "40 100 100 100";

// رنگ حاشیه جدول را به صورت LightGray تنظیم کنید
table.Border = new Aspose.Pdf.BorderInfo(Aspose.Pdf.BorderSide.All, .5f, Aspose.Pdf.Color.FromRgb(System.Drawing.Color.LightGray));

// مرز سلول های جدول را تنظیم کنید
table.DefaultCellBorder = new Aspose.Pdf.BorderInfo(Aspose.Pdf.BorderSide.All, .5f, Aspose.Pdf.Color.FromRgb(System.Drawing.Color.LightGray));

// داده ها را وارد کنید
table.ImportDataTable(dt, true, 0, 1, 3, 3);

// شی جدول را به صفحه اول سند ورودی اضافه کنید
doc.Pages[1].Paragraphs.Add(table);

// سند به روز شده حاوی شی جدول را ذخیره کنید
doc.Save("output.pdf");

در زیر خروجی نمونه کد بالا آمده است.

افزودن داده ها از پایگاه داده به PDF در سی شارپ

داده ها را از پایگاه داده به PDF در Entity Framework اضافه کنید

این روزها، Entity Framework (EF) معمولاً توسط توسعه دهندگان استفاده می شود. بنابراین، گسترش کلاس Table برای پر کردن اسناد PDF با لیست ها یا داده های گروه بندی شده در EF مفید خواهد بود. در ادامه نحوه پر کردن جدول PDF با استفاده از لیست و داده های گروه بندی شده را مشاهده می کنید. در هر دو روش، جدول و داده ها به عنوان آرگومان های متد ارسال می شوند.

public static class PdfHelper
{
    public static void ImportEntityList<TSource>(this Pdf.Table table, IList<TSource> data)
    {
        var headRow = table.Rows.Add();

        var props = typeof(TSource).GetProperties(BindingFlags.Public | BindingFlags.Instance);
        foreach (var prop in props)
        {
            headRow.Cells.Add(prop.GetCustomAttribute(typeof(DisplayAttribute)) is DisplayAttribute dd ? dd.Name : prop.Name);
        }

        foreach (var item in data)
        {
            // سطر را به جدول اضافه کنید
            var row = table.Rows.Add();
            // سلول های جدول را اضافه کنید
            foreach (var t in props)
            {
                var dataItem = t.GetValue(item, null);
                if (t.GetCustomAttribute(typeof(DataTypeAttribute)) is DataTypeAttribute dataType)
                    switch (dataType.DataType)
                    {

                        case DataType.Currency:
                            row.Cells.Add(string.Format("{0:C}", dataItem));
                            break;
                        case DataType.Date:
                            var dateTime = (DateTime)dataItem;
                            if (t.GetCustomAttribute(typeof(DisplayFormatAttribute)) is DisplayFormatAttribute df)
                            {
                                row.Cells.Add(string.IsNullOrEmpty(df.DataFormatString)
                                    ? dateTime.ToShortDateString()
                                    : string.Format(df.DataFormatString, dateTime));
                            }
                            break;
                        default:
                            row.Cells.Add(dataItem.ToString());
                            break;
                    }
                else
                {
                    row.Cells.Add(dataItem.ToString());
                }
            }
        }
    }
    public static void ImportGroupedData<TKey,TValue>(this Pdf.Table table, IEnumerable<Models.GroupViewModel<TKey, TValue>> groupedData)
    {
        var headRow = table.Rows.Add();           
        var props = typeof(TValue).GetProperties(BindingFlags.Public | BindingFlags.Instance);
        foreach (var prop in props)
        {
           headRow.Cells.Add(prop.GetCustomAttribute(typeof(DisplayAttribute)) is DisplayAttribute dd ? dd.Name : prop.Name);               
        }

        foreach (var group in groupedData)
        {
            // سطر گروه را به جدول اضافه کنید
            var row = table.Rows.Add();
            var cell = row.Cells.Add(group.Key.ToString());
            cell.ColSpan = props.Length;
            cell.BackgroundColor = Pdf.Color.DarkGray;
            cell.DefaultCellTextState.ForegroundColor = Pdf.Color.White;

            foreach (var item in group.Values)
            {
                // ردیف داده را به جدول اضافه کنید
                var dataRow = table.Rows.Add();
                // سلول ها را اضافه کنید
                foreach (var t in props)
                {
                    var dataItem = t.GetValue(item, null);

                    if (t.GetCustomAttribute(typeof(DataTypeAttribute)) is DataTypeAttribute dataType)
                        switch (dataType.DataType)
                        {
                            case DataType.Currency:
                                dataRow.Cells.Add(string.Format("{0:C}", dataItem));
                                break;
                            case DataType.Date:
                                var dateTime = (DateTime)dataItem;
                                if (t.GetCustomAttribute(typeof(DisplayFormatAttribute)) is DisplayFormatAttribute df)
                                {
                                    dataRow.Cells.Add(string.IsNullOrEmpty(df.DataFormatString)
                                        ? dateTime.ToShortDateString()
                                        : string.Format(df.DataFormatString, dateTime));
                                }
                                break;
                            default:
                                dataRow.Cells.Add(dataItem.ToString());
                                break;
                        }
                    else
                    {
                        dataRow.Cells.Add(dataItem.ToString());
                    }
                }
            }
        }
    }
}
public class GroupViewModel<K,T>
{
    public K Key;
    public IEnumerable<T> Values;
}

مجوز رایگان دریافت کنید

برای استفاده از Aspose.PDF برای دات نت بدون محدودیت ارزیابی، می توانید یک مجوز موقت رایگان دریافت کنید.

نتیجه

در این مقاله نحوه اضافه کردن داده ها از پایگاه داده به فایل های PDF در سی شارپ را یاد گرفتید. نحوه وارد کردن داده ها از DataTable به جدول در فایل PDF را مشاهده کرده اید. علاوه بر این، ما پیاده سازی داده ها را به PDF با استفاده از Entity Framework پوشش داده ایم. علاوه بر این، می‌توانید با استفاده از مستندات درباره C# PDF API بیشتر کاوش کنید. در صورت داشتن هرگونه سوال یا سوال، می توانید از طریق [تالار گفتمان13 ما با ما تماس بگیرید.

همچنین ببینید