提取带标签的PDF中的阅读顺序

问题描述 投票:1回答:1

我目前正在验证标签PDF文件中内容的正确顺序。

是否可以通过编程方式提取带标签的PDF文件的阅读顺序号?

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9RRUJTTC5wbmcifQ==” alt =“图像样本”>

我已经尝试将带标签的PDF转换为XML,但是我无法弄清楚哪些标签属于某个文本。

我已经尝试了以下库:

  • 同步
  • IText7

但是我找不到任何获得其阅读顺序编号的方法。

真的有可能吗?预先感谢!

java c# pdf accessibility acrobat
1个回答
0
投票

您可以使用PdfPig(.Net)库提取标记为pdf的标记内容树。我的理解是阅读顺序由标记内容标识符(MCID)指示。

如果标记的内容元素不包含MCID(如分页元素),则MCID设置为-1。

每个MarkedContentElement将包含属于它的字母,图像和路径:

        using UglyToad.PdfPig;
        [...]

        using (PdfDocument document = PdfDocument.Open(pathToFile))
        {
            for (int p = 0; p < document.NumberOfPages; p++)
            {
                var page = document.GetPage(p + 1);

                // extract the page's marked content
                var markedContents = page.GetMarkedContents(); 

                var orderedMarkedContents = markedContents
                       .OrderBy(mc => mc.MarkedContentIdentifier);

                foreach (var mc in orderedMarkedContents)
                {
                    // do something
                }
            }
        }

如果要将结果提取为XML,则可以查看PageXmlTextExporter类。请查看wiki,以获取有关ITextExporterIReadingOrderDetector的更多信息。

注意:我是这个图书馆的积极贡献者。

© www.soinside.com 2019 - 2024. All rights reserved.