通过读取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; } } }