نمایش نتایج 1 تا 14 از 14

نام تاپیک: خروجی Gridview به PDF

  1. #1

    Question خروجی Gridview به PDF

    با سلام خدمت همه
    من یک GridView دارم که فونت ها همه فارسی هستند. چند تا نمونه کد خروجی جدول به pdf رو دارم ولی هیچ کدوم واسه فونت فارسی کار نمیکنه
    چجوری باید این مشکل رو رفع کنم.
    این یه نمونه کدم هست:

    using iTextSharp.text;
    using iTextSharp.text.html.simpleparser;
    using iTextSharp.text.pdf;

    private void ExportGridToPDF()
    {
    PdfPTable pdfPTable = new PdfPTable(this.dgvCheckListForExport.HeaderRow.Cel ls.Count);
    foreach(TableCell headrerCell in dgvCheckListForExport.HeaderRow.Cells)
    {
    iTextSharp.text.Font font = new iTextSharp.text.Font();
    font.Color = new BaseColor(this.dgvCheckListForExport.HeaderStyle.F oreColor);
    PdfPCell pdfCell = new PdfPCell(new Phrase(headrerCell.Text, font));
    pdfCell.BackgroundColor = new BaseColor(this.dgvCheckListForExport.HeaderStyle.B ackColor);
    pdfPTable.AddCell(pdfCell);
    }
    foreach (GridViewRow gridViewRow in dgvCheckListForExport.Rows)
    {
    foreach(TableCell tableCell in gridViewRow.Cells)
    {
    iTextSharp.text.Font font = new iTextSharp.text.Font();
    font.Color = new BaseColor(this.dgvCheckListForExport.RowStyle.Fore Color);
    PdfPCell pdfCell = new PdfPCell(new Phrase(tableCell.Text, font));
    pdfCell.BackgroundColor = new BaseColor(this.dgvCheckListForExport.RowStyle.Back Color);
    pdfPTable.AddCell(pdfCell);
    }
    }
    Document pdfDocument = new Document(PageSize.A4, 10f, 10f, 10f, 10f);
    PdfWriter.GetInstance(pdfDocument, Response.OutputStream);
    pdfDocument.Open();
    pdfDocument.Add(pdfPTable);
    pdfDocument.Close();
    Response.ContentType = "application/pdf";
    Response.AppendHeader("content-disposition", "attachment;filename=CheckList"+this.lbCode.Text.T rim()+".pdf");
    Response.Write(pdfDocument);
    Response.Flush();
    Response.End();
    }


    که خروجیش وقتی pdf میشه هیچی رو نمایش نمیده. تصویر زیر
    CheckList1.jpg


    اینم نمونه کد دوم:


    Response.ClearContent();
    Response.ContentType = "application/pdf";
    Response.AddHeader("content-disposition", "attachment;filename=MyPdfFile.pdf");
    Response.Cache.SetCacheability(HttpCacheability.No Cache);
    StringWriter strWrite = new StringWriter();
    HtmlTextWriter htmWrite = new HtmlTextWriter(strWrite);
    HtmlForm frm = new HtmlForm();
    dgvCheckListForExport.Parent.Controls.Add(frm);
    frm.Attributes["runat"] = "server";
    frm.Controls.Add(dgvCheckListForExport);
    frm.RenderControl(htmWrite);
    StringReader sr = new StringReader(strWrite.ToString());
    Document pdfDoc = new Document(PageSize.A4, 8f, 8f, 8f, 2f);
    HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
    PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
    pdfDoc.Open();
    htmlparser.Parse(sr);
    pdfDoc.Close();
    Response.Write(pdfDoc);
    Response.Flush();
    Response.End();

    اینم نمونه تصویر خروجی pdf کد بالا
    CheckList2.jpg

    خیلی جستجو کردم که چجوری این document که حالت pdf ساخته میشه از راست به چپ باشه و utf8 هم باشه. ولی چیزی دستگیرم نشد.
    خیلی سر این موضوع درگیر شدم و وقتم رو گرفته.
    ممنون میشم اگر دوستان تجربه ای در این خصوص دارند راهنمایی و کمک کنند
    با سپاس

  2. #2
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,057

    نقل قول: خروجی Gridview به PDF

    سلام و روز خوش

    1- شاید ایراد از فونت ها باشه (مثل فونت های سری B که واقعا زباله ان!)
    با فونت های استاندارد مثل tahoma , arial , ... تست کنین.

    2- مطمئن بشین که آیا فقط با فارسی مشکل داره یا کلا با غیرانگلیسی کار نمیکنه (سیریلیک و ... رو تست کنین)

    3- پرسش ها رو با تگ "آموزش" مشخص نکنین.
    گمراه کننده است!
    آموزش معنیش این هست که شما قرار هست چیزی آموزش بدین نه این که آموزش ببینین!

  3. #3

    نقل قول: خروجی Gridview به PDF

    سلام. بابت تگ چشم. این دفعه رعایت میشه.
    نه فونت هم از tahoma استفاده کردم. حتی فونت arial هم کردم. بازم فرقی نکرد.
    بله. همین کد رو یه پروژه جدید ایجاد کردم و تستی جدول رو انگلیسی پر کردم اوکی هست. ولی با فونت فارسی مشکل داره.
    ببخشید منظورتون از سیریلیک چی هست؟

  4. #4
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,057

    نقل قول: خروجی Gridview به PDF

    سلام دوباره
    منظور از سیریلیک خط کشورهای مثل روسیه و ... هست که خودش زیرمجموعه یونیکد حساب میشه.
    بعضی وقتها پیش میاد که کمپوننت ها با کارآکترهای فارسی/عربی مشکل دارن ولی با زیرمجموعه های دیگه نه (مثل همین سیریلیک، یا فرانسه، آلمانی، اسپانیایی و ...)
    بعضی وقتها هم کلا با غیرانگلیسی مشکل دارن.

    اسم کتابخانه هایی که تست کردین رو بدین - من هم سر فرصت تست میکنم.

    یک جستجو هم همینجا انجام بدین. احتمال داره که پیشتر هم مطرح شده باشه.

  5. #5

    نقل قول: خروجی Gridview به PDF

    با سلام
    از NuGet مورد iTextSharp رو روی پروژه نصب کردم. واسه خروجی به pdf از این کتابخانه استفاده کردم.
    جدولم هم که خود GridView خود دات نت هست.

  6. #6

    نقل قول: خروجی Gridview به PDF

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    سلام دوباره
    منظور از سیریلیک خط کشورهای مثل روسیه و ... هست که خودش زیرمجموعه یونیکد حساب میشه.
    بعضی وقتها پیش میاد که کمپوننت ها با کارآکترهای فارسی/عربی مشکل دارن ولی با زیرمجموعه های دیگه نه (مثل همین سیریلیک، یا فرانسه، آلمانی، اسپانیایی و ...)
    بعضی وقتها هم کلا با غیرانگلیسی مشکل دارن.

    اسم کتابخانه هایی که تست کردین رو بدین - من هم سر فرصت تست میکنم.

    یک جستجو هم همینجا انجام بدین. احتمال داره که پیشتر هم مطرح شده باشه.
    سلام مجدد
    با جستجو اون کد اولی رو یه خورده اصلاح کردم

    private void ExportGridToPDF()
    {
    PdfPTable pdfTable = new PdfPTable(this.dgvCheckListForExport.HeaderRow.Cel ls.Count);
    pdfTable.RunDirection = PdfWriter.RUN_DIRECTION_RTL;
    pdfTable.HorizontalAlignment = Element.ALIGN_CENTER;
    pdfTable.WidthPercentage = 100;
    var fontPath = Environment.CurrentDirectory + "\\fonts\\BNaznnBd.ttf";
    var fontBase = BaseFont.CreateFont(fontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
    var font = new iTextSharp.text.Font(fontBase, 10);
    iTextSharp.text.Font Text = new iTextSharp.text.Font(fontBase, 10, iTextSharp.text.Font.NORMAL);
    foreach (TableCell headrerCell in dgvCheckListForExport.HeaderRow.Cells)
    {
    font.Color = new BaseColor(this.dgvCheckListForExport.HeaderStyle.F oreColor);
    PdfPCell pdfCell = new PdfPCell(new Phrase(headrerCell.Text, font));
    pdfCell.HorizontalAlignment = Element.ALIGN_CENTER;
    pdfCell.VerticalAlignment = Element.ALIGN_CENTER;
    pdfCell.BackgroundColor = new BaseColor(this.dgvCheckListForExport.HeaderStyle.B ackColor);
    pdfTable.AddCell(pdfCell);
    }
    foreach (GridViewRow gridViewRow in dgvCheckListForExport.Rows)
    {
    foreach(TableCell tableCell in gridViewRow.Cells)
    {
    font.Color = new BaseColor(this.dgvCheckListForExport.RowStyle.Fore Color);
    PdfPCell pdfCell = new PdfPCell(new Phrase(tableCell.Text, font));
    pdfCell.HorizontalAlignment = Element.ALIGN_CENTER;
    pdfCell.VerticalAlignment = Element.ALIGN_CENTER;
    pdfCell.BackgroundColor = new BaseColor(this.dgvCheckListForExport.RowStyle.Back Color);
    pdfTable.AddCell(pdfCell);
    }
    }
    Document pdfDocument = new Document(PageSize.A4, 10f, 10f, 10f, 10f);
    PdfWriter.GetInstance(pdfDocument, Response.OutputStream);
    pdfDocument.Open();
    pdfDocument.Add(pdfTable);
    pdfDocument.Close();
    Response.ContentType = "application/pdf";
    Response.AppendHeader("content-disposition", "attachment;filename=CheckListNosaziCode"+this.lbC ode.Text.Trim()+".pdf");
    Response.Write(pdfDocument);
    Response.Flush();
    Response.End();
    }

    جالبه pdf میشه ولی سفید هست(طبق تصویر اولی). ولی وقتی همون pdf رو تبدیل به word می کنم اطلاعات رو نمایش میده همه چی هم درسته و فونت و سایر موارد!!
    آخرین ویرایش به وسیله MasoudAdmin : یک شنبه 02 مهر 1402 در 20:13 عصر

  7. #7
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,057

    Create Persian PDF using itext7

    امروز یک کم با این کتابخانه کار کردم.
    چند مورد هست که مطرح میکنم و امیدوارم مفید باشه.

    1- کتابخانه iTextSharp دیگه کنار گذاشته شده و deprecated هست:
    Screenshot 2023-09-25 155556.png

    بنابراین باید از کتابخانه itext7 استفاده کنین:
    Screenshot 2023-09-25 160719.png

    2- با توجه به اون چه که در این کتابخانه دیدم (تجربه چند ساعته البته)،
    بعید میدونم که کدهای ورژن قبلی هم به درستی متن فارسی رو رندر کرده باشن.
    من روی کتابخانه قدیمی وقت نگذاشتم،
    ولی اگر روی ورژن قدیمی کدی پیدا کردین که واقعا کار میکنه، همون رو استفاده کنین.

    3- در حالت عادی، متن فارسی نمایش داده میشه ولی اشتباه رندر میشه:
    گل پژمرده پامچال Screenshot 2023-09-25 162220.png

    4- برای این که متن فارسی درست رندر بشه (راست به چپ و چسباندن حروف)،
    باید یک کتابخانه دیگه به اسم pdfcalligraph استفاده کنین که رایگان نیست!
    Screenshot 2023-09-25 162717.png
    5- با افزودن این کتابخانه مشکل نمایش درست متن فارسی (تا حد زیادی) رفع میشه:
    Screenshot 2023-09-25 163208.png
    ولی همینجور که دیده میشه ایرادهایی هم داره که بخشی از اون به فونت برمیگرده و یکسان نیست.

    6- برای مقایسه و تصمیم گیری، کد نمونه و خروجی اون رو برای هر دو حالت زیر در پست های بعدی میگذارم:
    - بدون کتابخانه pdfcalligraph
    - با استفاده از کتابخانه pdfcalligraph (باید خریداری بشه)

  8. #8
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,057

    Create Persian PDF using itext7

    using System;
    using System.Windows.Forms;
    using iText.Kernel.Pdf;
    using iText.Kernel.Font;
    using iText.Kernel.Geom;
    using iText.Layout;
    using iText.Layout.Element;
    using iText.Layout.Properties;


    private static string PDF_File = "D:\\demo_BN576172.pdf";
    private static string Fonts_Dir = Application.StartupPath.Replace("bin\\Debug", "Fonts");
    private string[] fonts = {
    "tahoma",
    "calibri",
    "arial",
    "segoeui",
    "intelone-mono-font-family-regular",
    "NotoNaskhArabic-Regular",
    "Vazirmatn-Regular",
    "ircompset",
    "bcompset",
    "IranNastaliq",
    "IranNastaliqP" };
    private static string Persian_Text = "گل پژمرده پامچال";
    private static string English_Text = "Sample Text";
    private static string German_Text = "Fußgängerübergänge";
    private static string Greek_Text = "Δείγμα κειμένου";
    private static string Symbol_Text = "∞∫∑∏∆∂↔↕∩≈℧℗☺♣";


    PdfDocument pdfDoc = new PdfDocument(new PdfWriter(PDF_File));
    Document doc = new Document(pdfDoc,PageSize.A4.Rotate());
    doc.SetMargins(10, 10, 10, 10);
    Style Pstyle = new Style(); // Persian Style
    Pstyle.SetFontSize(12);
    Pstyle.SetFontScript(iText.Commons.Utils.UnicodeSc ript.ARABIC);
    Pstyle.SetBaseDirection(BaseDirection.RIGHT_TO_LEF T);
    Pstyle.SetVerticalAlignment(VerticalAlignment.MIDD LE);
    Pstyle.SetTextAlignment(TextAlignment.RIGHT);


    Style Estyle = new Style(); // English Style
    Estyle.SetFontSize(12);
    Estyle.SetVerticalAlignment(VerticalAlignment.MIDD LE);
    Estyle.SetTextAlignment(TextAlignment.LEFT);


    Style Header = new Style().SetBold().SetTextAlignment(TextAlignment.C ENTER);
    Table pdfTable = new Table(new float[6]).UseAllAvailableWidth();
    pdfTable.AddCell(new Paragraph("Font").AddStyle(Header));
    pdfTable.AddCell(new Paragraph("Persian").AddStyle(Header));
    pdfTable.AddCell(new Paragraph("English").AddStyle(Header));
    pdfTable.AddCell(new Paragraph("German").AddStyle(Header));
    pdfTable.AddCell(new Paragraph("Greek").AddStyle(Header));
    pdfTable.AddCell(new Paragraph("Symbol").AddStyle(Header));


    for (int i = 0; i < fonts.Length; i++)
    {
    PdfFont fnt = PdfFontFactory.CreateFont($"{Fonts_Dir}{fonts[i]}.ttf");
    pdfTable.AddCell(new Cell().AddStyle(Estyle).Add(new Paragraph(fonts[i])));
    pdfTable.AddCell(new Cell().AddStyle(Pstyle).Add(new Paragraph(Persian_Text).SetFont(fnt)));
    pdfTable.AddCell(new Cell().AddStyle(Estyle).Add(new Paragraph(English_Text).SetFont(fnt)));
    pdfTable.AddCell(new Cell().AddStyle(Estyle).Add(new Paragraph(German_Text).SetFont(fnt)));
    pdfTable.AddCell(new Cell().AddStyle(Estyle).Add(new Paragraph(Greek_Text).SetFont(fnt)));
    pdfTable.AddCell(new Cell().AddStyle(Estyle).Add(new Paragraph(Symbol_Text).SetFont(fnt)));
    }
    doc.Add(pdfTable);
    doc.Close();

  9. #9
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,057

    Create Persian PDF using itext7

    خروجی کد پست 8:
    Screenshot 2023-09-25 165608.jpg

    فایل pdf ساخته شده نیز پیوست میشود.
    فایل های ضمیمه فایل های ضمیمه

  10. #10
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,057

    Create Persian PDF using itext7

    برای استفاده از pdfcalligraph لازم نیست در کد تغییری بدیم،
    کافی هست اول برنامه فایل لایسنس رو لود کنیم.

    برای کامل بودن نمونه، کد این بخش رو با vb.net میگذارم.
    از نظر عملکرد دقیقا مشابه کد پست 8 هست با این تفاوت که:
    1 - کد بارگذاری لایسنس اضافه شده
    2- فونت bcompset حذف شده چون باعث خطا میشه (وقتی میگم فونت های سری b زباله خالصن دقیقا همینه)

    Imports iText.Layout
    Imports iText.Kernel.Pdf
    Imports iText.Kernel.Font
    Imports iText.Layout.Element
    Imports iText.Layout.Properties
    Imports iText.Kernel.Geom


    Const PDF_File = "D:\\demo_BN576172_calligraph.pdf"
    Private Fonts_Dir As String = Application.StartupPath.Replace("bin\Debug", "Fonts")
    Private fonts As String() = {
    "tahoma",
    "calibri",
    "arial",
    "segoeui",
    "intelone-mono-font-family-regular",
    "NotoNaskhArabic-Regular",
    "Vazirmatn-Regular",
    "ircompset",
    "IranNastaliq",
    "IranNastaliqP"}
    Const Persian_Text = "گل پژمرده پامچال"
    Const English_Text = "Sample Text"
    Const German_Text = "Fußgängerübergänge"
    Const Greek_Text = "Δείγμα κειμένου"
    Const Symbol_Text = "∞∫∑∏∆∂↔↕∩≈℧℗☺♣"


    iText.Licensing.Base.LicenseKey.LoadLicenseFile(Ne  w IO.FileInfo("x.json"))

    Dim pdfDoc As PdfDocument = New PdfDocument(New PdfWriter(PDF_File))
    Dim doc As Document = New Document(pdfDoc, PageSize.A4.Rotate())
    doc.SetMargins(10, 10, 10, 10)
    Dim Pstyle As Style = New Style()
    Pstyle.SetFontSize(12)
    Pstyle.SetFontScript(iText.Commons.Utils.UnicodeSc ript.ARABIC)
    Pstyle.SetBaseDirection(BaseDirection.RIGHT_TO_LEF T)
    Pstyle.SetVerticalAlignment(VerticalAlignment.MIDD LE)
    Pstyle.SetTextAlignment(TextAlignment.RIGHT)
    Dim Estyle As Style = New Style()
    Estyle.SetFontSize(12)
    Estyle.SetVerticalAlignment(VerticalAlignment.MIDD LE)
    Estyle.SetTextAlignment(TextAlignment.LEFT)
    Dim Header As Style = New Style().SetBold().SetTextAlignment(TextAlignment.C ENTER)
    Dim pdfTable As Table = New Table(New Single(5) {}).UseAllAvailableWidth()
    pdfTable.AddCell(New Paragraph("Font").AddStyle(Header))
    pdfTable.AddCell(New Paragraph("Persian").AddStyle(Header))
    pdfTable.AddCell(New Paragraph("English").AddStyle(Header))
    pdfTable.AddCell(New Paragraph("German").AddStyle(Header))
    pdfTable.AddCell(New Paragraph("Greek").AddStyle(Header))
    pdfTable.AddCell(New Paragraph("Symbol").AddStyle(Header))


    For i As Integer = 0 To fonts.Length - 1
    Dim fnt As PdfFont = PdfFontFactory.CreateFont($"{Fonts_Dir}{fonts(i)}. ttf")
    pdfTable.AddCell(New Cell().AddStyle(Estyle).Add(New Paragraph(fonts(i))))
    pdfTable.AddCell(New Cell().AddStyle(Pstyle).Add(New Paragraph(Persian_Text).SetFont(fnt)))
    pdfTable.AddCell(New Cell().AddStyle(Estyle).Add(New Paragraph(English_Text).SetFont(fnt)))
    pdfTable.AddCell(New Cell().AddStyle(Estyle).Add(New Paragraph(German_Text).SetFont(fnt)))
    pdfTable.AddCell(New Cell().AddStyle(Estyle).Add(New Paragraph(Greek_Text).SetFont(fnt)))
    pdfTable.AddCell(New Cell().AddStyle(Estyle).Add(New Paragraph(Symbol_Text).SetFont(fnt)))
    Next

    doc.Add(pdfTable)
    doc.Close()

  11. #11
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,057

    Create Persian PDF using itext7

    خروجی کد پست 10:
    Screenshot 2023-09-25 172211.jpg

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

  12. #12
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,057

    نقل قول: خروجی Gridview به PDF

    ادامه موارد پست 7:

    7- همینجور که دیده میشه، این کتابخانه در رندر بعضی فونتها در حالتهای خاص مشکل (جزئی) داره.
    همچنین در بعضی فونت ها بعضی از زیرمجموعه های یونیکد پیاده نشده.
    بنابراین فونت باید با توجه به نوع محتوای دیتا انتخاب بشه.
    فونت arial چون حروف چسبیده وسط و اول کلمه یک شکل هستن کمترین اشکال رو داره.

    8- بنظر میاد این کتابخانه، با وجود امکانات خیلی زیاد، یک کتابخانه low-level هست.
    یعنی برای هر کار ساده ای باید کد بنویسین. متدی برای نوشتن یک کنترل پیچیده مثل gridview یا datagridview نداره (تا اونجا که چک کردم).
    در واقع باید یک جدول بسازین و دیتا رو از یک دیتاسورس یا گرید یکی یکی بخونین و در این جدول بنویسین.
    تعریف style هم وقت گیر هست (رنگ، سایز، چیدن افقی-عمودی، ایتالیک و پررنگ و ...)
    اگر قرار باشه دقیقا شکل گرید رو بسازین کدنویسی خیلی سخت و وقت گیر هست - شاید اگر به image تبدیل کنین و در pdf بنویسین راحتتر باشه.

  13. #13

    نقل قول: Create Persian PDF using itext7

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    using System;
    using System.Windows.Forms;
    using iText.Kernel.Pdf;
    using iText.Kernel.Font;
    using iText.Kernel.Geom;
    using iText.Layout;
    using iText.Layout.Element;
    using iText.Layout.Properties;


    private static string PDF_File = "D:\\demo_BN576172.pdf";
    private static string Fonts_Dir = Application.StartupPath.Replace("bin\\Debug", "Fonts");
    private string[] fonts = {
    "tahoma",
    "calibri",
    "arial",
    "segoeui",
    "intelone-mono-font-family-regular",
    "NotoNaskhArabic-Regular",
    "Vazirmatn-Regular",
    "ircompset",
    "bcompset",
    "IranNastaliq",
    "IranNastaliqP" };
    private static string Persian_Text = "گل پژمرده پامچال";
    private static string English_Text = "Sample Text";
    private static string German_Text = "Fußgängerübergänge";
    private static string Greek_Text = "Δείγμα κειμένου";
    private static string Symbol_Text = "∞∫∑∏∆∂↔↕∩≈℧℗☺♣";


    PdfDocument pdfDoc = new PdfDocument(new PdfWriter(PDF_File));
    Document doc = new Document(pdfDoc,PageSize.A4.Rotate());
    doc.SetMargins(10, 10, 10, 10);
    Style Pstyle = new Style(); // Persian Style
    Pstyle.SetFontSize(12);
    Pstyle.SetFontScript(iText.Commons.Utils.UnicodeSc ript.ARABIC);
    Pstyle.SetBaseDirection(BaseDirection.RIGHT_TO_LEF T);
    Pstyle.SetVerticalAlignment(VerticalAlignment.MIDD LE);
    Pstyle.SetTextAlignment(TextAlignment.RIGHT);


    Style Estyle = new Style(); // English Style
    Estyle.SetFontSize(12);
    Estyle.SetVerticalAlignment(VerticalAlignment.MIDD LE);
    Estyle.SetTextAlignment(TextAlignment.LEFT);


    Style Header = new Style().SetBold().SetTextAlignment(TextAlignment.C ENTER);
    Table pdfTable = new Table(new float[6]).UseAllAvailableWidth();
    pdfTable.AddCell(new Paragraph("Font").AddStyle(Header));
    pdfTable.AddCell(new Paragraph("Persian").AddStyle(Header));
    pdfTable.AddCell(new Paragraph("English").AddStyle(Header));
    pdfTable.AddCell(new Paragraph("German").AddStyle(Header));
    pdfTable.AddCell(new Paragraph("Greek").AddStyle(Header));
    pdfTable.AddCell(new Paragraph("Symbol").AddStyle(Header));


    for (int i = 0; i < fonts.Length; i++)
    {
    PdfFont fnt = PdfFontFactory.CreateFont($"{Fonts_Dir}{fonts[i]}.ttf");
    pdfTable.AddCell(new Cell().AddStyle(Estyle).Add(new Paragraph(fonts[i])));
    pdfTable.AddCell(new Cell().AddStyle(Pstyle).Add(new Paragraph(Persian_Text).SetFont(fnt)));
    pdfTable.AddCell(new Cell().AddStyle(Estyle).Add(new Paragraph(English_Text).SetFont(fnt)));
    pdfTable.AddCell(new Cell().AddStyle(Estyle).Add(new Paragraph(German_Text).SetFont(fnt)));
    pdfTable.AddCell(new Cell().AddStyle(Estyle).Add(new Paragraph(Greek_Text).SetFont(fnt)));
    pdfTable.AddCell(new Cell().AddStyle(Estyle).Add(new Paragraph(Symbol_Text).SetFont(fnt)));
    }
    doc.Add(pdfTable);
    doc.Close();

    واقعا سپاس از وقتی که گذاشتید. ممنون

  14. #14

    نقل قول: خروجی Gridview به PDF

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    ادامه موارد پست 7:

    7- همینجور که دیده میشه، این کتابخانه در رندر بعضی فونتها در حالتهای خاص مشکل (جزئی) داره.
    همچنین در بعضی فونت ها بعضی از زیرمجموعه های یونیکد پیاده نشده.
    بنابراین فونت باید با توجه به نوع محتوای دیتا انتخاب بشه.
    فونت arial چون حروف چسبیده وسط و اول کلمه یک شکل هستن کمترین اشکال رو داره.

    8- بنظر میاد این کتابخانه، با وجود امکانات خیلی زیاد، یک کتابخانه low-level هست.
    یعنی برای هر کار ساده ای باید کد بنویسین. متدی برای نوشتن یک کنترل پیچیده مثل gridview یا datagridview نداره (تا اونجا که چک کردم).
    در واقع باید یک جدول بسازین و دیتا رو از یک دیتاسورس یا گرید یکی یکی بخونین و در این جدول بنویسین.
    تعریف style هم وقت گیر هست (رنگ، سایز، چیدن افقی-عمودی، ایتالیک و پررنگ و ...)
    اگر قرار باشه دقیقا شکل گرید رو بسازین کدنویسی خیلی سخت و وقت گیر هست - شاید اگر به image تبدیل کنین و در pdf بنویسین راحتتر باشه.

    از وقتی که گذاشتید و راهنمایی کردید سپاس.

تاپیک های مشابه

  1. راه حلی برای انتقال از Visual Studio GridView به Devexpress GridView
    نوشته شده توسط mmbguide در بخش C#‎‎
    پاسخ: 0
    آخرین پست: چهارشنبه 21 آذر 1397, 22:20 عصر
  2. سوال: تغییر سایز متن gridview هنگام بروز رسانی رکورد در gridview .....
    نوشته شده توسط omid6630 در بخش ASP.NET Web Forms
    پاسخ: 2
    آخرین پست: سه شنبه 23 اسفند 1390, 23:13 عصر
  3. سوال: برخورد با ارور The GridView 'GridView' fired event RowDeleting which wasn't handled.
    نوشته شده توسط adineh67 در بخش ASP.NET Web Forms
    پاسخ: 2
    آخرین پست: شنبه 03 دی 1390, 13:25 عصر
  4. استفاده از DropDownList در gridview و عدم ویرایش اطلاعات در Gridview
    نوشته شده توسط مهدی رحیم زاده در بخش ASP.NET Web Forms
    پاسخ: 5
    آخرین پست: دوشنبه 15 فروردین 1390, 22:13 عصر
  5. پاسخ: 4
    آخرین پست: دوشنبه 06 دی 1389, 21:48 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •