2017-02-27 28 views
0

iTextSharp 5.5.10を使用して、PDFファイル内にネストされたブックマークのタイトルを取得するプログラムを作成しています。PDFファイルでネストされたブックマークを取得する

入力パラメータとしてDictionary<string, object>オブジェクトを受け取り、List<string>オブジェクトを返しますが、機能しない反復関数を書きました。

public static List<string> bookmarksList(Dictionary<string, object> parent) 
{ 
    List<string> PDFbookmarks = new List<string>(); 

    if (parent.ContainsKey("Kids")) 
    { 
     PDFbookmarks.Add(parent["Kids"].ToString()); 
     Dictionary<string, object> child = parent["Kids"] as Dictionary<string, object>; 
     bookmarksList(child); 
    } 

    return PDFbookmarks; 
} 

Dictionary<string, object>オブジェクト私はGetBookmark(PDFReader)メソッドからそれを得ました。

ToString()メソッドが明らかに私に実際の子のタイトルを与えていないという事実を除いて、最初の繰り返し呼び出しでNullReferenceExceptionが得られます。関数の子変数を初期化しようとすると、 nullポインタ。デバッグウィンドウに示すように

Kidsキーに関連付けられた値は、IList<Dictionary<string, object>>オブジェクトそのものです:

System.Collections.Generic.List'1[System.Collections.Generic.Dictionary'2[System.String,System.Object]]] (これはListオブジェクトではなく、IListする必要がありますが、私は間違っている?)私が代わりにnullポインタを得た理由

ので、私は

任意のヒント...それを取得しないのですか?

ありがとう、 Davide。

+0

最終的な解決策は、*質問*の一部を追加するのではなく、*回答*として投稿してください。 – mkl

答えて

0

私はダウンキャスティングがうまくいったと思ったが、それはしなかった。変数宣言を変更することは私の日でした。私はまた、関数全体を書き直し、今度は意図したとおりに完全に動作します。

関連する問題