一般而言

要使用PDFBox提取文本(带或不带位置,颜色等额外信息),可以实例化 PDFTextStripper 或从中派生的类,并使用它:

PDFTextStripper stripper = new PDFTextStripper();

String text = stripper.getText(document);

(有许多 PDFTextStripper 属性允许您限制从中提取文本的页面 . )

在执行 getText 的过程中,解析所讨论的页面的内容流(以及从这些页面引用的形式的xObject),并处理文本绘制命令 .

如果要更改文本提取行为,则必须通过重写此方法来更改此文本绘制命令处理,这通常应该执行此操作:

/**

* Write a Java string to the output stream. The default implementation will ignore the textPositions

* and just calls {@link #writeString(String)}.

*

* @param text The text to write to the stream.

* @param textPositions The TextPositions belonging to the text.

* @throws IOException If there is an error when writing the text.

*/

protected void writeString(String text, List textPositions) throws IOException

{

writeString(text);

}

如果您还需要知道新行何时开始,您可能还想覆盖

/**

* Write the line separator value to the output stream.

* @throws IOException

* If there is a problem writing out the lineseparator to the document.

*/

protected void writeLineSeparator( ) throws IOException

{

output.write(getLineSeparator());

}

writeString 可以被覆盖以将文本信息引导到单独的成员中(例如,如果您可能希望结果采用比仅仅 String 更结构化的格式),或者可以覆盖它以简单地将一些额外信息添加到结果 String 中 .

可以重写 writeLineSeparator 以触发行之间的某些特定输出 .

有更多的方法可以被覆盖,但一般来说你不太可能需要它们 .

在手头的情况下

我正在使用PDFBox从pdf中提取信息,我当前试图找到的信息与该行中第一个字符的x位置有关 .

这可以通过以下方式实现(只需在每行的开头添加信息):

PDFTextStripper stripper = new PDFTextStripper()

{

@Override

protected void startPage(PDPage page) throws IOException

{

startOfLine = true;

super.startPage(page);

}

@Override

protected void writeLineSeparator() throws IOException

{

startOfLine = true;

super.writeLineSeparator();

}

@Override

protected void writeString(String text, List textPositions) throws IOException

{

if (startOfLine)

{

TextPosition firstProsition = textPositions.get(0);

writeString(String.format("[%s]", firstProsition.getXDirAdj()));

startOfLine = false;

}

super.writeString(text, textPositions);

}

boolean startOfLine = true;

};

text = stripper.getText(document);

(ExtractText.java方法 extractLineStart 由 testExtractLineStartFromSampleFile 测试)

java 取pdf 文本域_使用PDFBox获取文本行的位置相关推荐

  1. java 取pdf 文本域_Java iText填写PDF模版文本域空白问题

    public static void main(String[] args) throws DocumentException, IOException { PdfReader reader = ne ...

  2. java 取pdf 文本域_java – 使用iText从pdf文件中提取文本列

    我需要使用iText从pdf文件中提取文本. 问题是:一些pdf文件包含2列,当我提取文本时,我得到一个文本文件,其中列被合并为结果(即同一行中两列的文本) 这是代码: public class pd ...

  3. java读取pdf文本转换html

    java读取pdf文本转换html 完整代码地址 也就两个文件 java读取pdf中的纯文字,这里使用的是pdfbox工具包 maven引入如下配置 <dependency><gro ...

  4. java修改pdf内容流_java – 在PDFBox中,如何更改PDRectangle对象的原点(0,0)?

    你可以稍微改变坐标系,但最有可能的事情不会变得更加优雅. 首先-- 首先让我们澄清一些误解: 你假设 In PDFBox, PDRectangle objects' default origin (0 ...

  5. JAVA删除pdf空白页_【教程】Spire.PDF 教程:在C# 删除 PDF 中的空白页

    扫描双面打印纸张文档所创建的PDF可能包含空白页面,有时候空白页也可能是有意插入的. 在本文中,您将学习如何使用Spire.PDF检测并删除PDF文件中的空白页面. 空白页面通常被定义为不包含任何内容 ...

  6. java 返回上一个页面_页面返回上一页浏览位置

    1.如果上一页是静态页面,可以用 history.go(-1)方法: go() 方法可加载历史列表中的某个具体的页面. 该参数可以是数字,使用的是要访问的 URL 在 History 的 URL 列表 ...

  7. java生成pdf旋转_基于Java实现PDF文本旋转倾斜

    本文介绍通过Java程序在PDF文档中设置文本旋转.倾斜的方法.设置文本倾斜时,通过定义方法TransformText(page);并设置page.getCanvas().skewTransform( ...

  8. java读取pdf多表格_在Java中使用tabula提取PDF中的表格数据

    问题:如何将pdf文件中指定的表格数据提取出来? 尝试过的工具包有:pdfbox.tabula.最终选用tabula 两种工具的比较 pdfbox 其中,pdfbox能将pdf中的内容直接提取成Str ...

  9. Pdf文本域替换,iText替换pdf文本域

    替换pdf字段主要工具 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf& ...

最新文章

  1. 面试必问---Java线程池8大拒绝策略
  2. LintCode 1.A+B的问题
  3. css3学习 理论之渐变
  4. PHP设计模式之:单例模式
  5. 攻防演练中的业务逻辑漏洞及检测思路
  6. mlflow_在生产中设置MLflow
  7. 如何使用 @ OutputCache 指令的 VaryByCustom 属性来缓存不同版本的页面(二)
  8. ubuntu Fcitx 输入法 选择 黑框问题 解决方案
  9. 到上海,与陈绪零距离
  10. 最新修复版微信H5漂流瓶V2.0更新版本 社交漂流瓶H5源码
  11. vc707(virtex7)FLASH下载实验
  12. 怎么登陆小程序服务器端,微信小程序如何登录
  13. 重要接口关键词搜索——item_search-按关键字搜索淘宝商品
  14. linux磁盘阵列教程,RAID 磁盘阵列简述
  15. 于明:APU能否接力取代迟暮的X86?
  16. gif表情制作一键轻松搞定,教你自制gif表情
  17. 【笔记】 欧几里得(扩展欧几里得)
  18. 社会分工的理想与现实
  19. 系统集成15真题解析
  20. 诺基亚出了款香蕉手机!你是想对抗苹果嘛?

热门文章

  1. 信息技术计算机网络课堂实录,信息技术教案:计算机网络简介
  2. oracle rman 实例,Oracle数据库rman常用命令的使用示例
  3. asynchttpclient学习
  4. 基于JAVA+SpringMVC+Mybatis+MYSQL的酒店食品仓库管理系统
  5. oracle12c官方文档中文版_三分钟让你真正读懂oracle12c 中cdb pdb概念及原理
  6. jedis操作set_你真的会使用redis的数据类型set么
  7. 开启spring boot学习之旅
  8. angular,vue,react的基本语法—双向数据绑定、条件渲染、列表渲染、angular小案例...
  9. SIP对话、事务详解
  10. Swing写qq聊天软件(想要QQ表情@我呦)