我一直在玩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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我试图玩PDGraphicsState对象,该对象在PDFStreamEngine类的processEncodedText方法中处理,但没有在那里找到行的信息.
有关可以从中检索此信息的任何建议吗?
这是我到目前为止发现的:
PDFBox使用资源文件将PDF操作符/指令绑定到某些类,然后这些类处理信息.
如果我们看一下PDFTextStripper.properties资源文件:
PDFBOX的\ src \主\资源\组织\阿帕奇\ PDFBOX \资源\
我们可以看到,例如BT运算符绑定到 org.apache.pdfbox.util.operator.BeginText类,依此类推.
该PDFTextStripper下
PDFBOX的\ src \主\ java的\组织\阿帕奇\ PDFBOX\UTIL\
将此考虑在内并利用此类的PDF处理.
但是所有图形对象都被忽略,因此没有下划线或表格结构的信息!
现在,如果我们看一下PageDrawer.properties资源文件,我们可以看到这个几乎所有可用的运算符.这是由PageDrawer类使用的
PDFBOX的\ src \主\ java的\组织\阿帕奇\ PDFBOX\PDF查看器\
现在,"技巧"是找出哪些图形运算符代表下划线和表格,并将它们与PDFTextStripper结合使用.
现在这意味着要阅读PDF文件规范,这是目前的工作方式.
如果有人知道哪些操作员负责绘制下划线和表格行的操作,请告诉我.
| 归档时间: |
|
| 查看次数: |
5094 次 |
| 最近记录: |