【发布时间】:2018-04-10 16:40:33
【问题描述】:
我有一个可编辑的 pdf 表单。我创建了一个与 PDF 中的列相同的表。我的要求是将这些列数据(单行)绑定到现有 PDF 的文本框。
在这里,通过我的一段代码,我可以获取 PDF 表单字段的 ID,并将这些字段与数据绑定。
{
MemoryStream ms = new MemoryStream();
PdfReader reader = new PdfReader(Request.MapPath("~/test.pdf"));
PdfStamper formFiller = new PdfStamper(reader, ms);
AcroFields formFields = formFiller.AcroFields;
ArrayList aa = new ArrayList();
foreach (DictionaryEntry de in reader.AcroFields.Fields)
{
aa.Add(de.Key.ToString());
}
SqlCommand cmd = new SqlCommand("select Gname ,addr1 ,addr2,hno,gender ,postcode ,
Fname,color,driving ,country ,city,height from example where Gname='pramod'", conn);
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
conn.Open();
int counter = 0;
int colcount = ds.Tables[0].Columns.Count;
if (!object.Equals(ds.Tables[0], null))
{
if (ds.Tables[0].Rows.Count > 0)
{
for (int j = 0; j < colcount; j++)
{
foreach (var item in aa)
{
if (item.ToString() == ds.Tables[0].Columns[j].ToString())
{
formFields.SetField(item.ToString(), ds.Tables[0].Rows[0][j].ToString());
var it = item.ToString();
counter++;
if (counter > 0)
{
aa.Remove(it);
break;
}
}
}
}
}
formFiller.Close();
reader.Close();
Response.ContentType = "application/pdf";
Response.WriteFile("Default4.aspx");
Response.BinaryWrite(ms.ToArray());
但问题是我随机获取这些 id,即与 pdf 中的顺序不同。所以我不能继续使用基于索引的循环绑定,因为 id 没有按顺序出现。而且我不知道哪个 Id 与哪个文本/复选框一起使用?
对于下图中的 ex,第一个 AADHAR NUMBER id 来自 pdf 的第 10 页。而且,你可以看到一些不规则的名字,比如 checkbox1,2 我不知道它是哪个文本框 id..
【问题讨论】: