java 取pdf 文本域_使用PDFBox获取文本行的位置
一般而言
要使用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获取文本行的位置相关推荐
- java 取pdf 文本域_Java iText填写PDF模版文本域空白问题
public static void main(String[] args) throws DocumentException, IOException { PdfReader reader = ne ...
- java 取pdf 文本域_java – 使用iText从pdf文件中提取文本列
我需要使用iText从pdf文件中提取文本. 问题是:一些pdf文件包含2列,当我提取文本时,我得到一个文本文件,其中列被合并为结果(即同一行中两列的文本) 这是代码: public class pd ...
- java读取pdf文本转换html
java读取pdf文本转换html 完整代码地址 也就两个文件 java读取pdf中的纯文字,这里使用的是pdfbox工具包 maven引入如下配置 <dependency><gro ...
- java修改pdf内容流_java – 在PDFBox中,如何更改PDRectangle对象的原点(0,0)?
你可以稍微改变坐标系,但最有可能的事情不会变得更加优雅. 首先-- 首先让我们澄清一些误解: 你假设 In PDFBox, PDRectangle objects' default origin (0 ...
- JAVA删除pdf空白页_【教程】Spire.PDF 教程:在C# 删除 PDF 中的空白页
扫描双面打印纸张文档所创建的PDF可能包含空白页面,有时候空白页也可能是有意插入的. 在本文中,您将学习如何使用Spire.PDF检测并删除PDF文件中的空白页面. 空白页面通常被定义为不包含任何内容 ...
- java 返回上一个页面_页面返回上一页浏览位置
1.如果上一页是静态页面,可以用 history.go(-1)方法: go() 方法可加载历史列表中的某个具体的页面. 该参数可以是数字,使用的是要访问的 URL 在 History 的 URL 列表 ...
- java生成pdf旋转_基于Java实现PDF文本旋转倾斜
本文介绍通过Java程序在PDF文档中设置文本旋转.倾斜的方法.设置文本倾斜时,通过定义方法TransformText(page);并设置page.getCanvas().skewTransform( ...
- java读取pdf多表格_在Java中使用tabula提取PDF中的表格数据
问题:如何将pdf文件中指定的表格数据提取出来? 尝试过的工具包有:pdfbox.tabula.最终选用tabula 两种工具的比较 pdfbox 其中,pdfbox能将pdf中的内容直接提取成Str ...
- Pdf文本域替换,iText替换pdf文本域
替换pdf字段主要工具 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf& ...
最新文章
- 面试必问---Java线程池8大拒绝策略
- LintCode 1.A+B的问题
- css3学习 理论之渐变
- PHP设计模式之:单例模式
- 攻防演练中的业务逻辑漏洞及检测思路
- mlflow_在生产中设置MLflow
- 如何使用 @ OutputCache 指令的 VaryByCustom 属性来缓存不同版本的页面(二)
- ubuntu Fcitx 输入法 选择 黑框问题 解决方案
- 到上海,与陈绪零距离
- 最新修复版微信H5漂流瓶V2.0更新版本 社交漂流瓶H5源码
- vc707(virtex7)FLASH下载实验
- 怎么登陆小程序服务器端,微信小程序如何登录
- 重要接口关键词搜索——item_search-按关键字搜索淘宝商品
- linux磁盘阵列教程,RAID 磁盘阵列简述
- 于明:APU能否接力取代迟暮的X86?
- gif表情制作一键轻松搞定,教你自制gif表情
- 【笔记】 欧几里得(扩展欧几里得)
- 社会分工的理想与现实
- 系统集成15真题解析
- 诺基亚出了款香蕉手机!你是想对抗苹果嘛?
热门文章
- 信息技术计算机网络课堂实录,信息技术教案:计算机网络简介
- oracle rman 实例,Oracle数据库rman常用命令的使用示例
- asynchttpclient学习
- 基于JAVA+SpringMVC+Mybatis+MYSQL的酒店食品仓库管理系统
- oracle12c官方文档中文版_三分钟让你真正读懂oracle12c 中cdb pdb概念及原理
- jedis操作set_你真的会使用redis的数据类型set么
- 开启spring boot学习之旅
- angular,vue,react的基本语法—双向数据绑定、条件渲染、列表渲染、angular小案例...
- SIP对话、事务详解
- Swing写qq聊天软件(想要QQ表情@我呦)