提取PDF书签并将其与参数C#进行比较

时间:2014-04-02 18:35:43

标签: c# pdf

我对PDF中的书签有疑问。 我从文件中导入参数列表,并希望将它们与提取的书签进行比较。我在浏览导入的参数列表和我提取的书签时遇到了麻烦。 有人可以看看这段代码并帮我解决一下吗? 谢谢!

 public static void CompareBookmarks(string MyPDf, List<string> MyTitles)
        {

          PdfReader reader = new PdfReader(MyPdf);
          IList<Dictionary<string, object>> bookmarks = SimpleBookmark.GetBookmark(reader);

          foreach (Dictionary<string, object> itemBookmark in bookmarks)

           {

             foreach (KeyValuePair<string, object> item in itemBookmark)
             {
               foreach (var title in MyTitles)
               {

                     if (item.Value == str.ToString())
                     {
                        Console.WriteLine("Found");
                     }


                     else
                     {
                         Console.WriteLine("Not found");
                     }
                 }
             }

         }

问题是,正如我现在所看到的,书签中的每个项目都有3个键/对值(标题,页码)。所以问题是 - 如何才能比较第一个值 - 标题和我的字符串?

2 个答案:

答案 0 :(得分:0)

我认为没有理由枚举书签中的所有项目,因为您只对标题感兴趣。所以没有测试,我会期待这样的事情:

foreach (Dictionary<string, object> bookmark in bookmarks)
{
  foreach (var title in MyTitles)
  {
    if (bookmark["Title"].ToString() == title)
    {
      // found
    }
  }
}

答案 1 :(得分:0)

    public static void CompareBookmarks(string MyPDf, List<string> MyTitles)
    {

      PdfReader reader = new PdfReader(MyPdf);
      IList<Dictionary<string, object>> bookmarks = SimpleBookmark.GetBookmark(reader);

      foreach (Dictionary<string, object> itemBookmark in bookmarks)

       {

        KeyValuePair<string, object> firstPairOfDictionary = item.FirstOrDefault();
               foreach (var title in myTitles)
               {

                  if (firstPairOfDictionary.Value != title.ToString())
                   {
                       Console.WriteLine("Did not found");
                       continue;
                   }

                   break;
               }

     }

解决方案是在KeyValuePair中获取第一个对象。 我犯了一个错误并遍历每个书签中的所有对象。