Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从pdf文件中获取下拉菜单的值?_C#_Visual Studio_Pdf_Itext - Fatal编程技术网

C# 如何从pdf文件中获取下拉菜单的值?

C# 如何从pdf文件中获取下拉菜单的值?,c#,visual-studio,pdf,itext,C#,Visual Studio,Pdf,Itext,我正在接收已填写的PDF文件,但无法从表单中的下拉菜单中检索导出值 我使用visualstudios来测试和可视化表单中填写的值,当我试图检索它的值时,下拉菜单是唯一的问题 AcroFields.Item items = resField.GetFieldItem(fieldNameInXFADictionary); PdfDictionary valueDict = items.GetValue(0); PdfName curVal = valueDict.GetAsName(PdfName.

我正在接收已填写的PDF文件,但无法从表单中的下拉菜单中检索导出值

我使用visualstudios来测试和可视化表单中填写的值,当我试图检索它的值时,下拉菜单是唯一的问题

AcroFields.Item items = resField.GetFieldItem(fieldNameInXFADictionary);
PdfDictionary valueDict = items.GetValue(0);
PdfName curVal = valueDict.GetAsName(PdfName.AS);

if (curVal != null)
{
    String result = curVal.ToString();

    if (result == "/1")
    {
        result = "YES";
    }
    else if (result == "/Off" || result == "/OFF")
    {
        result = "NO";
    }
    else if (result == "/2")
    {
        result = "YES";
    }
    count = 1;
    return result;
}
else if(curVal == null)
{
    return resField.Fields.Values.ToString();
}
测试时,字段不应为
null
,但是,当它转换为
PdfName
curVal
时,它被确定为
null
,这对我来说没有多大意义。 因此,它进入else语句,该语句返回“System.util.collections.LinkedDictionary`2+ValueCollection[System.String,iTextSharp.text.pdf.AcroFields+Item”


下拉菜单中的值是“美国”。

您的问题还没有答案,我需要更多的时间来回答。但是在输入第二个
if
之前,您已经
返回结果了,所以这实际上是死代码。@AmedeeVanGasse很抱歉,我编辑掉了第一个“返回结果”out。我使用返回结果来测试字段值是否返回null或notnull。它确实返回“null”值,因此它会转到“else if”语句。最后一个
else
是多余的,但是,如果你将第一个
if
倒置,那么你就有了一个保护子句。我相信C#也能够对字符串进行
切换,不是吗?让自己更容易,使用
curVal.ToString().ToUpper()
@AmedeeVanGasse所以字符串上的开关不是我想要的。我想要的是输出值“美国”,它是在pdf文件的下拉菜单中选择的。但是,当在Visual Studio中读取pdf文件时,它会将该值输出为null。尚未回答您的问题,我需要更多时间来执行此操作。但是,在输入第二个
if
之前,您已经
返回结果,因此这实际上是死代码。@AmedeeVanGasse抱歉关于这一点,我编辑掉了第一个“return result”。我使用返回结果来测试字段值是否返回null或not null。它确实返回了一个“null”值,因此它将转到“else if”语句。最后一个
else
是多余的,但是,如果你将第一个
if
倒置,那么你就有了一个保护子句。我相信C#也能够对字符串进行
切换,不是吗?让自己更容易,使用
curVal.ToString().ToUpper()
@AmedeeVanGasse所以字符串上的开关不是我要寻找的。我要寻找的是输出值“United States”,它是在pdf文件的下拉菜单中选择的。但是,在Visual Studio中读取pdf文件时,它将该值输出为null。