【问题标题】:how to get UTF8 characters from Mysql to store into PDF in a C# prog by Using Itextsharp?如何使用 Itextsharp 从 Mysql 获取 UTF8 字符以存储到 C# prog 中的 PDF 中?
【发布时间】:2014-03-14 07:27:38
【问题描述】:

我是使用 UTF8 编码的 Mysql 数据库,我可以在 PHP MyAdmin 中看到我的记录 适当地。 我还可以使用这个数据库和 c# prog 在 google crome 上生成 o/p。 我正在使用 Itextsharp dll 生成 pdf。 我想将数据库中的数据存储到devnagri中的pdf。 我尝试设置字体,因为我找到了很多教程。 设置字体适用于硬编码字符串,但不适用于数据库。

 public Example1()
        {
            string appRootDir = new DirectoryInfo(Environment.CurrentDirectory).Parent.Parent.FullName;
            try
            {
                // Step 1: Creating System.IO.FileStream object
                using (FileStream fs = new FileStream(appRootDir + "/PDFs/" + "Chapter1_Example1.pdf", FileMode.Create, FileAccess.Write, FileShare.None))
                // Step 2: Creating iTextSharp.text.Document object
                using (Document doc = new Document())
                // Step 3: Creating iTextSharp.text.pdf.PdfWriter object
                // It helps to write the Document to the Specified FileStream
                using (PdfWriter writer = PdfWriter.GetInstance(doc, fs))
                {
                    // Step 4: Openning the Document
                    doc.Open();


                    MySqlDataReader reader = null;
                    string connectionString = @"Data Source=localhost; Database=Records; User ID=root; Password=''";
                    using (MySql.Data.MySqlClient.MySqlConnection cs = new MySql.Data.MySqlClient.MySqlConnection(connectionString))
                    {
                        string sqlText = "Select * from app";
                        cs.Open();

                        MySqlCommand cmd = new MySqlCommand(sqlText, cs);
                       // var font = FontFactory.GetFont(BaseFont.)
                        BaseFont bf = BaseFont.CreateFont("C:\\Windows\\Fonts\\cprkshn.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

                        //Create a specific font object
                        Font f = new Font(bf, 12, Font.NORMAL);

                        reader = cmd.ExecuteReader();
                        while (reader.Read())                        
                        {
                            //String s = reader["name"].ToString();

                            doc.Add(new Paragraph(reader["id"] + "---" + reader["name"].ToString() + "¶ããñ‡ãŠÀãè", f));
                        }
                    }

                    // Step 5: Adding a paragraph
                    // NOTE: When we want to insert text, then we've to do it through creating paragraph


                    // Step 6: Closing the Document
                    doc.Close();
                }
            }
            // Catching iTextSharp.text.DocumentException if any
            catch (DocumentException de)
            {
                throw de;
            }
            // Catching System.IO.IOException if any
            catch (IOException ioe)
            {
                throw ioe;
            }
        }
    }

【问题讨论】:

    标签: c# mysql pdf utf-8 itextsharp


    【解决方案1】:

    您应该配置您的连接 - 设置字符集 UTF8。你可以使用这个 MySQL 命令来做到这一点 -

    SET NAMES utf8;
    

    在打开连接后首先运行此命令。

    另外,您可以配置您的连接字符串,尝试添加Character Set=utf8。结果连接字符串可以是这样的-

    string connectionString = "Data Source=localhost; Database=Records; User ID=root; Password=''; Character Set=utf8";
    

    【讨论】:

    • 问题不在于 mysql 我想因为我可以在谷歌浏览器上打印它。这对我不起作用。
    【解决方案2】:

    您尝试使用的字体没有梵文 Unicode 范围,因此无法使用。梵文字符应使用Unicode U+0900 through U+097F 以及扩展名U+A8E0 through U+A8FF。您使用的字体在高位 ASCII 区域 (128-255) 中有它们。尝试切换到 ARIALUNI.TTF,您应该会看到您的角色出现。

    我知道 Arial Unicode 是一种非常大的字体,但请先尝试一下,以确保您的代码正常工作。然后您就可以开始寻找适合您需要的较小字体了。

    【讨论】:

      猜你喜欢
      • 2015-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-18
      • 1970-01-01
      • 2011-06-13
      • 1970-01-01
      • 2018-11-24
      相关资源
      最近更新 更多