使用PdfPig将PDF转为可检索列表时GetPages.add.ToList语句报错
问题原因
你代码里的错误来自两处多余的错误写法:
- 你自己额外声明了
public static object GetPages { get; private set; }这个完全无用的属性,和PdfPig的PdfDocument.GetPages()方法重名,你写的GetPages.add.ToList(pages)实际是在调用这个object类型的属性,object本身没有add成员,必然触发报错。 - 你没有正确使用LINQ的
ToList()方法,pdf.GetPages()返回的是IEnumerable<Page>类型,直接调用自身的ToList()扩展方法就可以转成列表,不需要多余的赋值操作。
修正后的代码
using System; using System.Collections.Generic; using System.Linq; using UglyToad.PdfPig; using UglyToad.PdfPig.Content; // 引入Page类型的对应命名空间 namespace TrainingProject { class Program { static void Main(string[] args) { using (var pdf = PdfDocument.Open(@"C:\Users\name\desktop\blahblahblah.pdf")) { // 一次调用GetPages直接转列表即可,不需要重复调用 List<Page> pages = pdf.GetPages().ToList(); bool found = false; // 加数量判断避免PDF为空时索引越界 if (pages.Count > 0) { string pageText = pages[0].Text; if (pageText.Contains("|BRE|")) { found = true; } } // 如果需要检索所有页可以替换为下面的遍历逻辑 // foreach (var page in pages) // { // if (page.Text.Contains("|BRE|")) // { // found = true; // break; // } // } Console.WriteLine(found ? "Text Found" : "Text not found"); } } } }
补充说明
原代码里的foreach循环仅提取了每页文本但没有做存储、使用操作,属于冗余逻辑,修正版本已删除。
内容的提问来源于stack exchange,提问作者mobuspwnd
相关产品推荐
相关产品推荐

