2016-05-30 230 views
4

我有PDF文件,其中包含水平对齐,垂直对齐和反向对齐等四种不同方向的文本。使用PDFBox API从pdf中读取文本时,我获得了良好的水平对齐文本输出,但在其他情况下却没有。 例如,如果“斜体”单词水平对齐,则输出为“斜体”。如果它是垂直对齐的,那么输出在整个行上分割,如“ ”it a
li c“(这里”it“,”a“,”li“,”c“在不同的行中)。 我想知道是否有任何方法可以获得良好的输出,即使是垂直和反向对齐的文本。如何使用PDFBox API从PDF获取文本的方向

+0

很抱歉,您不会共享一个示例PDF。虽然有垂直书写的PDF字体,但我认为PDF中的字体不是那种类型。如果我的假设是正确的,那么“*垂直对齐*”文本实际上由横跨多行的正常水平对齐文本组成。因此,输出*分割为“它是一个 李c”*将是正确的。 – mkl

+0

但是,如果我的假设是错误的,PDFBox仍然不会提取文本,因为它是在考虑水平文本的情况下实现的。但是,在这种情况下,你可能会相应地重写'org.apache.pdfbox.text.PDFTextStripper.writePage()'。 – mkl

+0

您可以请分享您使用的代码,因为我面临类似的问题。 –

回答

2

您可以重写PDFTextStripper的processTextPosition()方法并编写逻辑来获取每个字符的方向,x和y值。通过根据其方向对角色进行分组,您可以单独剪裁它们。

+0

它看起来很有前途。谢谢你,请尝试让你知道结果 – sagar

+0

谢谢你的男人......它像一个魅力。 – sagar