Java 如何使用PDFBOXAPI从PDF中获取文本方向

Java 如何使用PDFBOXAPI从PDF中获取文本方向,java,pdfbox,Java,Pdfbox,我有PDF文件,其中有四种不同方向的文本,如水平对齐、垂直对齐和反向对齐。当使用PDFBOXAPI从pdf读取文本时,我得到了水平对齐文本的良好输出,但在其他情况下没有。 例如,如果“italic”字水平对齐,则输出为“italic”。如果它是垂直对齐的,那么输出将按如下方式跨行拆分 ”“是吗 a 锂 (这里“it”、“a”、“li”、“c”在不同的行中)。 我想知道是否有任何方法可以获得良好的输出,即使是垂直对齐和反向对齐的文本。您可以覆盖PDFTextStripper的processText

我有PDF文件,其中有四种不同方向的文本,如水平对齐、垂直对齐和反向对齐。当使用PDFBOXAPI从pdf读取文本时,我得到了水平对齐文本的良好输出,但在其他情况下没有。 例如,如果“italic”字水平对齐,则输出为“italic”。如果它是垂直对齐的,那么输出将按如下方式跨行拆分 ”“是吗 a
锂 (这里“it”、“a”、“li”、“c”在不同的行中)。
我想知道是否有任何方法可以获得良好的输出,即使是垂直对齐和反向对齐的文本。

您可以覆盖PDFTextStripper的processTextPosition()方法,并编写逻辑以获得每个字符的方向、x和y值。通过根据字符的方向对字符进行分组,可以分别对其进行裁剪。

遗憾的是,您没有共享示例PDF。虽然有用于垂直书写的PDF字体,但我认为您的PDF中的字体不是那种字体。如果我的假设是正确的,“垂直对齐”文本实际上是由多行排列的正常、水平对齐的文本块组成的。因此,跨行拆分为“it a li c”的输出是正确的。但是,如果我的假设是错误的,PDFBox仍然不会按照您的意愿提取文本,因为它是在考虑水平文本的情况下实现的。不过,在这种情况下,您可能有幸相应地重写了
org.apache.pdfbox.text.PDFTextStripper.writePage()
。您能否分享您使用的代码,因为我面临类似的问题。它看起来很有希望。谢谢……我会尽力让你知道结果的