c#itextsharp,在页面中找到单词而不是块,并确定它们添加便笺的位置

c#itextsharp,在页面中找到单词而不是块,并确定它们添加便笺的位置,c#,itext,C#,Itext,我已经阅读了所有相关的StackOverflow,还没有找到一个合适的解决方案。我想打开一个PDF,获取文本(单词)和它们的坐标,然后进一步,在其中一些单词上添加一个便笺 看来这是不可能的任务,我累坏了 这段代码怎么能正确地找到页面中的所有单词(而不是它们的坐标) 使用(PdfReader读取器=新PdfReader(路径)) { StringBuilder sb=新的StringBuilder(); ITextractionStrategy策略=新的SimpleTextractionStrat

我已经阅读了所有相关的StackOverflow,还没有找到一个合适的解决方案。我想打开一个PDF,获取文本(单词)和它们的坐标,然后进一步,在其中一些单词上添加一个便笺

看来这是不可能的任务,我累坏了

这段代码怎么能正确地找到页面中的所有单词(而不是它们的坐标)

使用(PdfReader读取器=新PdfReader(路径))
{
StringBuilder sb=新的StringBuilder();
ITextractionStrategy策略=新的SimpleTextractionStrategy();

对于(int page=5;page而言,chunk.m_文本一次似乎只包含一个字母,这就是为什么它永远不会是真的:

if (chunk.m_text.Trim() == "MCU_MOSI")
您可以做的是将每个文本块添加到字符串中,然后查看它是否包含您的文本

    PdfReader reader = new PdfReader(path);
    PdfReaderContentParser parser = new PdfReaderContentParser(reader);

    LocationTextExtractionStrategyEx strategy;
    string str = string.Empty;

    for (int i = 5; i <= 5; i++) // reader.NumberOfPages
    {
        strategy = parser.ProcessContent(i, new LocationTextExtractionStrategyEx("MCU_MOSI", 0));
        var x = strategy.m_SearchResultsList;
        foreach (LocationTextExtractionStrategyEx.ExtendedTextChunk chunk in strategy.m_DocChunks)
        {
            str += chunk.m_text;
            if (str.Contains("MCU_MOSI"))
            {
                str = string.Empty;
                Vector location = chunk.m_endLocation;
                Console.WriteLine("Bingo"); 
            }                        
        }
    }
PdfReader reader=新的PdfReader(路径);
PdfReaderContentParser=新的PdfReaderContentParser(读取器);
LocationTextExtractionsStrategyex策略;
string str=string.Empty;

对于(inti=5;i),块具有位置和大小信息。因此,您可以根据需要对它们进行排序并推断空格。
if (chunk.m_text.Trim() == "MCU_MOSI")
    PdfReader reader = new PdfReader(path);
    PdfReaderContentParser parser = new PdfReaderContentParser(reader);

    LocationTextExtractionStrategyEx strategy;
    string str = string.Empty;

    for (int i = 5; i <= 5; i++) // reader.NumberOfPages
    {
        strategy = parser.ProcessContent(i, new LocationTextExtractionStrategyEx("MCU_MOSI", 0));
        var x = strategy.m_SearchResultsList;
        foreach (LocationTextExtractionStrategyEx.ExtendedTextChunk chunk in strategy.m_DocChunks)
        {
            str += chunk.m_text;
            if (str.Contains("MCU_MOSI"))
            {
                str = string.Empty;
                Vector location = chunk.m_endLocation;
                Console.WriteLine("Bingo"); 
            }                        
        }
    }