提取 PDF 书签并将其与参数 C# 进行比较
本文关键字:参数 比较 PDF 书签 提取 | 更新日期: 2023-09-27 17:56:09
我有一个关于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 个键/对值(标题、页码)。所以问题是 - 我如何仅将第一个值 - 标题与我的字符串进行比较?
我认为没有理由枚举书签中的所有项目,因为您只对标题感兴趣。所以如果没有测试,我会期待这样的事情:
foreach (Dictionary<string, object> bookmark in bookmarks)
{
foreach (var title in MyTitles)
{
if (bookmark["Title"].ToString() == title)
{
// found
}
}
}
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中的第一个对象。我犯了一个错误,并遍历了每个书签中的所有对象。