C#中如何读取xml,并将textbox中输入的值显示到pdf中对应的位置

通过读取xml文件的fieldname属性的值进行pdf位置的定位
将textbox上输入值显示到pdf上对应的位置 或者 创建一个datatable表格 将xml中获取的fieldname属性的值设为列,随意添加两行信息,将表中的信息显示到pdf中对应的位置,几行信息生成几张pdf
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

// An highlighted block
   private void buttonMakePDFSingle_Click(object sender, EventArgs e)
        {
            //デフォルトはマイドキュメントパス
            string createPdfPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            //指定したローカルフォルダにPDFを作成する。
            FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();
            folderBrowserDialog.ShowNewFolderButton = true;
            folderBrowserDialog.Description = "PDF帳票作成フォルダを選択してください。";
            folderBrowserDialog.SelectedPath = createPdfPath;

            if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
            {
                //获取xml的路径
                string pdfXmlPath = Path.Combine(System.Windows.Forms.Application.StartupPath, "記載事項建築PdfWriteInfo.xml");
                //获取目标pdf的路径
                string pdfTemplatePath = Path.Combine(System.Windows.Forms.Application.StartupPath, "記載事項建築PdfTemplate.PDF");
                string pdfXmlPath1 = Path.Combine(System.Windows.Forms.Application.StartupPath, "記載事項工作PdfWriteInfo.xml");
                string pdfTemplatePath1 = Path.Combine(System.Windows.Forms.Application.StartupPath, "記載事項工作PdfTemplate.PDF");
                string pdfXmlPath2 = Path.Combine(System.Windows.Forms.Application.StartupPath, "記載事項昇降機PdfWriteInfo.xml");
                string pdfTemplatePath2 = Path.Combine(System.Windows.Forms.Application.StartupPath, "記載事項昇降機PdfTemplate.PDF");

                iTextPdfWriterClass pdfWriterClass = new iTextPdfWriterClass();
              PdfReport pdfReport = pdfWriterClass.GetPdfReportFromXmlPath(pdfXmlPath);
                iTextPdfWriterClass pdfWriterClass1 = new iTextPdfWriterClass();
                PdfReport pdfReport1 = pdfWriterClass1.GetPdfReportFromXmlPath(pdfXmlPath1);
                iTextPdfWriterClass pdfWriterClass2 = new iTextPdfWriterClass();
                PdfReport pdfReport2 = pdfWriterClass2.GetPdfReportFromXmlPath(pdfXmlPath2);

                //将XML文件加载进来
                XmlDocument doc = new XmlDocument();
                doc.Load(pdfXmlPath);
                XmlDocument doc1 = new XmlDocument();
                doc1.Load(pdfXmlPath1);
                XmlDocument doc2 = new XmlDocument();
                doc2.Load(pdfXmlPath2);

                 //这一步是获取textbox上输入的值显示到pdf上要用到的
                //将textbox上输入的值存到list中
                   List<string> box = new List<string>();
                   box.Add(textBoxKenchikuA01.Text.ToString());
                   box.Add(textBoxKenchikuA02.Text.ToString());
                   box.Add(textBoxKenchikuA03.Text.ToString());
                   box.Add(textBoxKenchikuA05.Text.ToString());
                   box.Add(textBoxKenchikuA06.Text.ToString());
                   box.Add(textBoxKenchikuA07.Text.ToString());
                   box.Add(textBoxKenchikuA08.Text.ToString());
                   box.Add(textBoxKenchikuA09.Text.ToString());
                   box.Add(textBoxKenchikuA10.Text.ToString());
                   box.Add(textBoxKenchikuA11.Text.ToString());
                   box.Add(textBoxKenchikuA12.Text.ToString());
                   box.Add(textBoxKenchikuA13.Text.ToString());
                   box.Add(textBoxKenchikuA14.Text.ToString());
                   List<string> info = new List<string>();
                  //读取XML文件 
                  XmlNode xn = doc.SelectSingleNode("pdfreport");
                  XmlNode xn2 = xn.SelectSingleNode("page");
                  XmlNode xn3 = xn2.SelectSingleNode("pdfcontentstring");
                  XmlNodeList list = xn3.ChildNodes;
 
                //将xml文件中的filedname值添加到list中
                info = getdata(list);
                //将textbox上的信息显示到pdf上 
               if (info.Count > 0)
                {
                    MessageBox.Show(info1[0]);
                    for (int i = 0; i < box.Count; i++)
                    {
                        pdfReport.SetShowTextValue(0, 0, info[i], PdfShowTextAlignedType.FieldName, box[i]);
                        pdfWriterClass.CreatePdf(pdfReport, pdfTemplatePath, "D:/bb.pdf");

                    }
                }
                 //这一步是生成表 直接生成pdf 
                //创建一个名为"Table_New"的空表
                DataTable dt = new DataTable("Table_New");
              
                //创建带列名和类型的列
                for (int i = 0; i < info.Count; i++)
                {
                    dt.Columns.Add(info[i], typeof(String));
                }

                //创建数据
                DataRow dr = dt.NewRow();
                dt.Rows.Add();
                dr.ItemArray = new object[] { "dd" ,"ff"};
                dr[0] = "成都";
                dr[1] = "成都";
                dr[2] = "成都";
                dr[3] = "成都";
                dr[4] = "成都";
                dr[5] = "3";
                dr[6] = "0";
                dr[7] = "333";
                dr[8] = "2018年05月20日";
                dr[9] = "666";
                dr[10] = "2018年05月20日";
                dr[11] = "333";
                dr[12] = "we";
            
                dt.Rows.Add(dr);

                dr = dt.NewRow();
                dr[0] = "成都1";
                dr[1] = "成都1";
                dr[2] = "成都1";
                dr[3] = "成都1";
                dr[4] = "成都1";
                dr[5] = "31";
                dr[6] = "01";
                dr[7] = "3331";
                dr[8] = "2018年05月20日";
                dr[9] = "666";
                dr[10] = "2018年05月20日";
                dr[11] = "3313";
                dr[12] = "wew";

                dt.Rows.Add(dr);

                if (dt.Columns.Count > 0)
                {
                    int columnNum = 0;
                    columnNum = dt.Columns.Count;

                    for(int j = 0; j < dt.Rows.Count; j++) {
                        for (int i = 0; i < columnNum; i++)
                    {
                       
                        pdfReport.SetShowTextValue(0, 0, dt.Columns[i].ColumnName, PdfShowTextAlignedType.FieldName, dt.Rows[j][i].ToString());
                            pdfWriterClass.CreatePdf(pdfReport, pdfTemplatePath, "D:/aa"+j+".pdf");
                        }
                     }
                }
            }
            else
            {
                MessageBox.Show("没进来");
                return;
            }
        }
        //将节点名相同的子节点的fieldname属性的值存入list中
        public List<string> getdata(XmlNodeList list)
        {
            List<string> info = new List<string>();
            foreach (XmlNode item in list)
            {
                XmlElement xe = (XmlElement)item;
                info.Add(xe.GetAttribute("fieldname").ToString());
            }
            return info;

        }
    }

}