我对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个键/对值(标题,页码)。所以问题是 - 如何才能比较第一个值 - 标题和我的字符串?
答案 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中获取第一个对象。 我犯了一个错误并遍历每个书签中的所有对象。