繁体   English   中英

使用PDF小丑检测PDF表中的页眉和边框

[英]Detecting Headers and Borders in PDF Tables using PDF Clown

我正在使用PDF Clown的TextInfoExtractionSample将PDF表提取到Excel中,除了合并的单元格之外,我能够做到这一点。 在下面的代码中,对于对象“内容”,我将扫描的内容视为文本,XObject,ContainerObject,但对于边框则什么也没有。 任何人都知道哪个对象代表PDF表格中的边框,或者如何检测文本是否为表格的标题?

   private void Extract(ContentScanner level, PrimitiveComposer composer)
   {
      if(level == null)
        return;
      while(level.MoveNext())
      {
        ContentObject content = level.Current;
      }
    }

我正在使用PDF Clown的TextInfoExtractionSample ...

在下面的代码中,对于对象“内容”,我将扫描的内容视为文本,XObject,ContainerObject,但对于边框则什么也没有。

 while(level.MoveNext()) { ContentObject content = level.Current; } 

A)访问所有内容

在循环代码中,您从原始示例中删除了非常重要的块,

    if(content is XObject)
    {
        // Scan the external level!
        Extract(((XObject)content).GetScanner(level), composer);
    }

    if(content is ContainerObject)
    {
        // Scan the inner level!
        Extract(level.ChildLevel, composer);
    }

这些块使样本递归到复杂的对象(您提到的XObject,ContainerObject )中,这些对象又包含它们自己的简单内容。

B)检查所有内容

任何人都知道什么对象代表PDF表格中的边框

不幸的是,PDF内容中没有像border属性那样的东西。 取而代之的是,边框是独立的对象,通常是矢量图形,是线条还是非常细的矩形。

因此,在扫描页面内容时(递归地,如A所示 ),您将必须查找包含以下内容的Path实例(名称空间org.pdfclown.documents.contents.objects

  • moveTo mlineTo l笔划 S操作或
  • 矩形 refill f操作。

此答案可能会有所帮助)

当您遇到这样的界限时,您将不得不对其进行解释 这些线可能是边框,但也可以用作下划线,页面装饰,...

如果PDF刚好被加了标签,那么就可以使事情变得容易一些,因为您无需多解释。 相反,您可以阅读标记信息,该信息可以告诉您单元格的开始和结束位置,因此您无需解释图形线。 不幸的是,加标签的PDF还是少于。

或者如何检测文本是否为表格的标题?

就像上面一样,除非您碰巧检查了带标签的PDF,否则没有任何内容可以立即告诉您某些文本是表格标题。 您必须再次解释。 该文本是否超出您确定要形成表格的行数? 它在顶部吗? 还是在里面的任何地方? 是否以特定字体绘制? 或更大? 不同的颜色? 等等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM