为什么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。

如何解决这个错误?

为什么foreach在与itextsharp一起使用时会产生错误

错误提示:因为FieldsSystem.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);
}