为什么foreach在与itextsharp一起使用时会产生错误
本文关键字:错误 foreach 在与 itextsharp 一起 为什么 | 更新日期: 2023-09-27 18:05:33
部分代码为:
private void ListFieldNames()
{
string pdfTemplate = @"c:'Temp'PDF'fw4.pdf";
// title the form
this.Text += " - " + pdfTemplate;
// create a new PDF reader based on the PDF template document
PdfReader pdfReader = new PdfReader(pdfTemplate);
// create and populate a string builder with each of the
// field names available in the subject PDF
StringBuilder sb = new StringBuilder();
foreach (DictionaryEntry de in pdfReader.AcroFields.Fields)
{
sb.Append(de.Key.ToString() + Environment.NewLine);
}
// Write the string builder's content to the form's textbox
textBox1.Text = sb.ToString();
textBox1.SelectionStart = 0;
}
我得到以下错误:
Error 1 Cannot convert type 'System.Collections.Generic.KeyValuePair<string,iTextSharp.text.pdf.AcroFields.Item>' to 'System.Collections.DictionaryEntry' c:'Users'usrs'Documents'Visual Studio 2012'Projects'PDFTest SLN'PDFTest'Form1.cs 50 13 PDFTest
我使用的是VS 2012。
如何解决这个错误?
错误提示:因为Fields
是System.Collections.Generic.KeyValuePair<string,iTextSharp.text.pdf.AcroFields.Item>
的集合,而不是DictionaryEntry
的集合。
应该显式地使用System.Collections.Generic.KeyValuePair<string,iTextSharp.text.pdf.AcroFields.Item>
类型,或者使用var
关键字,让编译器确定类型。
我建议如下代码:
foreach (var de in pdfReader.AcroFields.Fields)
{
sb.Append(de.Key.ToString() + Environment.NewLine);
}