gpt4 book ai didi

java - PDF找出文本是否带下划线或表格单元格

转载 作者:IT老高 更新时间:2023-10-28 20:43:02 27 4
gpt4 key购买 nike

我一直在玩 PdfBox 和 PDFTextStripperByArea 方法。

如果文本是粗体斜体,我能够提取信息,但我无法获得下划线信息。

据我在PDF中的理解,下划线是通过画线来完成的。所以理论上我应该能够获得一些关于文本周围某处线条的信息。提供此信息后,我可以确定其中一个文本是带下划线还是在表格中。

到目前为止,这是我的代码:

List<TextPosition> textPos = charactersByArticle.get(index);

for (TextPosition t : textPos)
{
if (t.getFont().getFontDescriptor() != null)
{
if (t.getFont().getFontDescriptor().getFontWeight() > BOLD_WEIGHT ||
t.getFont().getFontDescriptor().isForceBold())
{
isBold = true;
}

if (t.getFont().getFontDescriptor().isItalic())
{
isItalic = true;
}
}
}

我试图玩转在 PDFStreamEngine 类中的 processEncodedText 方法中处理的 PDGraphicsState 对象,但没有找到那里的行信息。

有什么建议可以从中检索到这些信息吗?

最佳答案

这是我目前发现的:

PDFBox 使用资源文件将 PDF 运算符/指令绑定(bind)到某些类,然后这些类处理信息。

如果我们看一下 PDFTextStripper.properties 资源文件:

pdfbox\src\main\resources\org\apache\pdfbox\resources\

我们可以看到例如 BT 操作符绑定(bind)到org.apache.pdfbox.util.operator.BeginText 类等等。

下的 PDFTextStripper

pdfbox\src\main\java\org\apache\pdfbox\util\

考虑到这一点,并利用此类处理 PDF。

但所有图形对象都被忽略,因此没有下划线或表格结构的信息!

现在,如果我们看一下 PageDrawer.properties 资源文件,我们可以看到这个资源文件几乎适用于所有可用的运算符。由

下的 PageDrawer 类使用

pdfbox\src\main\java\org\apache\pdfbox\pdfviewer\

现在的“诀窍”是找出哪些图形运算符代表下划线和表格,并将它们与 PDFTextStripper 结合使用。

现在这意味着阅读 PDF 文件规范,这是目前很多工作的方式。

如果有人知道哪些运算符(operator)负责绘制下划线和表格线的哪些操作,请告诉我。

关于java - PDF找出文本是否带下划线或表格单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13948853/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com