首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用PDFBOX在PDF中打印TJ/Tj内的每个TJ和字符的位置?

PDFBOX是一个开源的Java库,用于处理PDF文件。它提供了丰富的功能,包括解析、创建、修改和提取PDF文件的内容。

要在PDF中打印TJ/Tj内的每个TJ和字符的位置,可以按照以下步骤进行操作:

  1. 导入PDFBOX库:首先,需要在项目中导入PDFBOX库。可以从官方网站(https://pdfbox.apache.org/)下载最新版本的PDFBOX,并将其添加到项目的依赖中。
  2. 打开PDF文件:使用PDFBOX库提供的API,打开需要处理的PDF文件。可以使用PDDocument.load()方法加载PDF文件,并将其存储在PDDocument对象中。
  3. 遍历页面:通过PDDocument对象,可以获取PDF文件的页面数量,并使用PDDocument.getPage()方法获取每个页面的PDPage对象。
  4. 解析页面内容:对于每个页面,可以使用PDPage对象的getContents()方法获取页面的内容。页面内容通常以PDStream的形式存储。
  5. 解析TJ/Tj指令:将页面内容转换为COSStream对象,并使用PDFBOX提供的解析器解析指令。对于TJ/Tj指令,可以使用PDFTextStripper类的processEncodedText()方法解析其内容。
  6. 获取位置信息:在解析TJ/Tj指令时,可以获取每个TJ和字符的位置信息。可以使用PDFTextStripper类的getTextPositions()方法获取字符的位置信息。
  7. 打印结果:将获取的TJ和字符的位置信息打印出来,可以使用System.out.println()方法将其输出到控制台。

以下是一个示例代码,演示了如何使用PDFBOX在PDF中打印TJ/Tj内的每个TJ和字符的位置:

代码语言:txt
复制
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDResources;
import org.apache.pdfbox.pdmodel.common.PDStream;
import org.apache.pdfbox.text.PDFTextStripper;
import org.apache.pdfbox.text.TextPosition;

import java.io.IOException;
import java.util.List;

public class PDFTextExtractor {
    public static void main(String[] args) {
        try {
            // 打开PDF文件
            PDDocument document = PDDocument.load("path/to/your/pdf/file.pdf");

            // 遍历页面
            for (PDPage page : document.getPages()) {
                // 获取页面内容
                PDStream contentStream = page.getContents();
                if (contentStream != null) {
                    // 解析页面内容
                    PDFTextStripper stripper = new PDFTextStripper() {
                        @Override
                        protected void processTextPosition(TextPosition text) {
                            // 获取字符位置信息
                            float x = text.getXDirAdj();
                            float y = text.getYDirAdj();
                            String content = text.getUnicode();

                            // 打印TJ/Tj内的每个TJ和字符的位置
                            System.out.println("TJ/Tj: " + content + " - X: " + x + " - Y: " + y);
                        }
                    };

                    // 解析TJ/Tj指令
                    stripper.processStream(page, page.getResources(), contentStream.getStream());

                    // 获取字符位置信息
                    List<TextPosition> textPositions = stripper.getTextPositions();
                    for (TextPosition text : textPositions) {
                        float x = text.getXDirAdj();
                        float y = text.getYDirAdj();
                        String content = text.getUnicode();

                        // 打印字符的位置
                        System.out.println("Character: " + content + " - X: " + x + " - Y: " + y);
                    }
                }
            }

            // 关闭PDF文件
            document.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

请注意,以上代码仅演示了如何使用PDFBOX库在PDF中打印TJ/Tj内的每个TJ和字符的位置。对于更复杂的PDF文件,可能需要进行额外的处理和解析。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PDF Explained(翻译)第六章 文本字体

打印文本 页面上打印文本需要: 选择字体。 选择位置,大小方向。 选择间距,颜色,文本渲染模式其他参数。 从字体中选择字符,并在页面上显示。...字距字形调整 TJ操作符可用于替代Tj,用于绘制具有水平字形调整字符串。这种情况通常发生在使用文字处理器或打字机布局情况下。...PDF,字体由字体字典组成, 字典定义了度量,字符编码(将文本字符字符代码映射到字体字符),以及字体程序(实际字体文件)。...字体编码 字体编码描述字符编码(内容流字符字符字体字形描述之间映射。 最简单/Encoding可以只是一个标准编码名子,这些编码PDF标准文档附录D定义。...这意味着PDF 查看器可以正确剪切粘贴文本,因为它知道字符编码1是一个项目符号( /bullet是Adobe Glyph List预定义名称)。

1K30

PDF Explained(翻译)第二章 构建一个简单PDF

关于PDFTK(THE PDF TOOLKIT) pdftk是一个开源命令行程序,它功能有: 合并分割PDF文档 旋转PDF页面 加解密 填充PDF表单 加水印图章 打印修改PDF元数据(metadata...交叉引用表: 列出了每个对象文档字节偏移量–这 允许随机访问任意对象,而不必顺序读取。 文件尾(trailer): 包括交叉引用表字节偏移,后面跟着文件结束标记。...第一行将文件标识为PDF并给出版本号: %PDF-1.1 //PDF version 1.1 header 第二行很难输入文本编辑器,因为它包含不可打印字符。 我们将它留给pdftk处理。...目录,交叉引用表和文件尾(Trailer) 文件最后一部分由文档目录开始,它是对象图(译者注:参看“文档结构”小节图示)根对象。 接下来是交叉引用表,它给出了每个对象文件字节偏移量。...头中添加了一些不可打印字符–这可以确保 文件被传输程序(比如FTP等)识别为二进制文件(而不是文本)。

1.3K30

序列比对(七)序列比对之线性空间算法

其中一种《生物序列分析》一书中给出,描述如下: ? 图片内容引自《生物序列分析》 如图中所说,关键点就是找到v值,然后通过不断分划,最终得到全部比对序列。本文给出了这种算法一种代码实现。...具体代码如下: (由于代码运用了“引用(具体地就是指代码 int &n 这一用法)”这一方法,所以是以cpp文件编译) #include #include <stdlib.h..., int bi, int bj, char* saln, char* raln, int &n) { // ti, tj, bi, bj 分别是左上角右下角单元横纵坐标; // 为了统一...// 因为bi - ti = 1这种情况下有可能会出现u = ti, v = tj从而导致无限循环 // 如果颠倒行列,可以将分治进行下去,因为此时不可能出现u = ti, v = tj情况...// 动态规划算法计算每个单元分值 for (j = tj + 1; j <= bj; j++) { tm[0] = a[k][j - 1]-

1.4K30

执行sed命令卡死CPU消耗100%一例分析

*/#&/g" mha_install.sh ^C[root@TJ-DB-6CU552YPXS backup]#top查看,sed进程CPU使用率100%: PID USER PR NI...()sed卡在字符集转换gconv ()函数上,mha_install.sh文件字符集为uft-8,os当前session字符集为gbk:[root@TJ-DB-6CU552YPXS backup]#...-6CU552YPXS backup]#即文件某些内容通过sed命令从uft-8转gbk时卡死,设置环境变量LANG=en_US,不进行字符集转换,再次执行sed命令快速返回结果:[root@TJ-DB...backup]# head -n 325 mha_install.sh|tail -1 #生成密钥对[root@TJ-DB-6CU552YPXS backup]#从输出不难猜测,应该是注释符号中文之间没有空格.../sed -n '1,$p'# 生成密钥对#生成密钥对[root@TJ-DB-6CU552YPXS backup]#总结1、注释符号汉字之间养成使用空格分隔习惯。

31610

数据工厂平台12:首页统计数据关联

【注意,此章节完全是css二次开发,理解难度极高,且极易出错,大家可以直接复制本文末尾源码来跳过此章节】 本节课要承接上节课内容,继续解决这个扇形统计图 外层指针角度动画问题:...我们回到views.py,先写好需要统计数据 实际数据 ,如: 2.计算百分比,我们可以用他们当前数量级最大数作为分母,来求出百分比 刷新下页面就可以看到打印结果: 如图,已经成功计算出了角度...给到前端: 我修改了前端展示数据样式,不显示百分比,而是实际数据。 注意,是分成了四个变量给过去,每个变量都有实际数据百分比角度 4....角度变量替换到顶部headloading- 各个里 其中26是一组,37是一组,48是一组,59是一组 (注意 loading-1 是初始不要碰不要改) 2345管着外圈角度, 6789...那么我们目前做法就是 要给右侧公共部分调用删掉,也就是完全删掉loading-1,然后把右侧调用也分别 放在 四组,而且我们后台过来角度,也要重新再传一份单独,外圈右角度 外圈左角度

39420

PDF标准详解(一)——PDF文档结构

PDF文档主体内容,主要由对象组成,它规定了页面信息页面内容元素等信息 交叉引用表给出了每个对象距离文件首部地址偏移,这样解析PDF时候就不用从头到尾解析每个对象,而是根据需要通过交叉引用表来寻址到具体对象地址...因为PDF是可移植文档,它需要在不同设备上显示同样内容,这里不能使用像素,如果使用像素,同样尺寸显示器上如果显示器像素分辨率不同,那么显示结果将会不同。所以这里一般使用磅作为单位。...Tj % 放置文本字符串 ET % 结束文本块 endstream % 流结束 endobj 通过stream来定义一个流对象,在这个流对象,我们定义它在页面的 (50, 700) 坐标位置显示字符...Tj来定义,并且定义了字符采用F0 字体,也就是上面定义Times-Italic字体 页面相关内容我们已经定义完了,接着我们需要定义一些结构相关对象,方便PDF解析器找到并解析页面内容。...具体对象定义相关语法每个对象详细解释将会在后面一系列文章给出,相信那个时候再来看这个 Hello Word 文档一定会有一个更清晰认识。

27310

ABAP初体验六:BAPI介绍

* 根据结构来定义结构变量 DATA: T_BAPISTAT like ZBAPISTAT OCCURS 0, G_BAPISTAT like ZBAPISTAT, t_tj02t...,而 l_objnr是存储jest表订单临时变量,后面主要是拼接OR开头字符串 DATA: l_aufnr like afko-aufnr, l_objnr like jest-objnr...* 第四步 ,从tj02t文本描述表查询状态名istat、文本信息,同时条件过滤了i_spras(语言),当然检索了表t_bapistat,将信息放到表t_tj02t(这个全局变量定义了...* 第五步 ,通过结构g_bapistat循环表t_bapistat,读表信息t_tj02t(用关键字istat状态名来判断,读到g_tj02t结构,读到了就将信息写入到g_bapistat...结构,然后修改表t_bapistat相关信息 sort t_tj02t by istat.

1.2K40

从零开始学习3D可视化之数据对接(3)

MQTT是一个轻量级协议,使用MQTT协议中心是broker(服务器/代理),客户端通过订阅消息发布消息进行数据交互。...url: 'https://www.thingjs.com/static/models/storehouse' }); app.on('load', function() { // 设置摄像机位置目标点...MQTT 协议中心是 broker(服务器/代理),客户端通过订阅消息发布消息进行数据交互。...MQTT协议是轻量、简单、开放和易于实现,这些特点使它适用范围非常广泛。可以以极少代码有限带宽,为连接远程设备提供实时可靠消息服务。...作为一种低开销、低带宽占用即时通讯协议,使其物联网3D可视化等方面有较广泛应用。 —————————————————

34520

PDF Explained(翻译)第四章 文档结构

本章我们来看PDF逻辑结构,涉及trailer字典,文档目录(document catalog)页面树以及PDF两种常见结构:文本字符日期。...键 值类型 值 /Size* 整数 交叉引用表条目总数(通常等于文件对象个数加1) /Root* 间接引用字典 文档目录 /Info 间接引用字典 文档信息字典 /ID 两个字符数组 文件工作流唯一标识...这种机制允许文档页面具有比1,2,3更复杂编号方式…例如,书籍前言可以编号为i,ii,iii …而主要内容 再次以1,2,3开始…这些页面标签仅用于PDF查看器显示,与打印输出无关。...目的地是对超链接跳转位置描述。 /ViewerPreferences 字典 查看器首选项字典,用于指定文档屏幕显示方式,例如缩放比例等。...定义了显示或打印页面时默认可见区域。如果不存在,则取媒体框值。 用于媒体框其它框矩形数据结构是包含四个数字数组。

89820

IDEA插件推荐:中文字符自动转化!

前几天TJ君正在勤奋开心地码代码时候,突然听到隔壁桌新来年轻妹子砸键盘,kuangkuangkuang怪吓人。...结果让TJ君哭笑不得是,并不是什么代码没有备份吖、电脑突然死机之类问题,而是妹子在编码过程输完中文老是忘记切换中英文输入法,导致一些中文输入法里逗号、分号、句号、括号、引号留在了代码里,妹子也没注意...那TJ君作为一个合格前辈,当然要给她指一条明路,缓解她歇斯底里症状。 这个同时大家一起分享就是一款idea中文字符替换插件!...插件能有效自动替换前文说到中文输入法逗号、分号、句号、括号、引号这一系列代码常用字符,经过TJ君实测,当你装好插件输入以下字符时( ,。;!...嘿嘿嘿 (提醒:有小伙伴留言提到最新21.2版本IDEA似乎无法使用这个插件,TJ君是21.1版本,这个版本还是可以用) 点击下方卡片,关注公众号“TJ君” 回复“自动转换”,获取插件地址 关注我

2.3K30

HadoopHDFS读取写入工作原理

本文主要讲解HDFS文件系统客户端是如何从Hadoop集群读取写入数据,也可以说是block策略。...node2对象分别得出两个datanode整个hdfs集群中所处层次。...这里层次概念需要解释一下:每个datanodehdfs集群中所处层次结构字符串是这样描述,假设hdfs拓扑结构如下:   每个datanode都会对应自己集群位置层次,如node1位置信息为...得到两个node层次后,会沿着每个node所处拓朴树位置向上查找,如“/rack1/datanode1”上一级就是“ /rack1”,此时两个节点之间距离加1,两个node分别同上向上查找,...到底是主机名还是ip地址会被传入到脚本,所以脚本中最好兼容主机名ip地址,如果机房架构比较复杂的话,脚本可以返回如:/dc1/rack1 类似的字符串。

74820

Markdown = PPT ?这个工具给力!

大家好,我是TJ 一个励志推荐10000款开源项目与工具程序员 TJ君平时最头疼是啥事情?当然是老大布置各种宣传任务!...所谓宣传任务,就是写各种各样宣传ppt,对于TJ君来说,要满足老大各种对于PPT奇思妙想严苛要求,还不如多写几行代码。...所幸有一位圈好友给TJ君介绍了一款PPT制作利器,Slidev,赶紧来大家分享下~ 说Slidev之前,咱先聊聊Markdown,认识Markdown之前,各种版式样式问题也一直困扰着TJ君,...Slidev使用了一种扩展Markdown格式,使得用户可以仅仅使用纯文本形式也完成PPT制作,尤其对于开发者来说,Slidev可以通过代码支持 HTML Vue 组件,可以现场根据演示效果进行编码修改...图标 —— 能够直接从任意图标库获取图标 编辑器 —— 集成编辑器,或者使用 VS Code 扩展 演讲录制 —— 内置录制功能摄像头视图 跨平台 —— 能够导出 PDF、PNG 文件,

73520

一个专业处理字符IDEA插件

大家好,我是TJ 一个励志推荐10000款开源项目与工具程序员 字符串处理想必是小伙伴们平时开发时经常碰到一个 “难题”。为什么要打上引号?...EscapeUnescape 插件支持将选中代码进行不同语言EscapeUnescape,包括Java、JavaScript、C#、HTML、SQL、JSON、XML、PHP,还可以将Unicode...实际效果是这样哦: 字符处理 这个插件最最让TJ君喜欢一点还是可以将一些字符进行不同指令处理,例如大小写互换啊、变大写啊、变小写啊、去除符号啊、符号变换啊很多很多。...如果小伙伴还是不理解到底能做什么的话,这个动图更直观一点: 因为功能实在太丰富,小伙伴最好还是自行体验尝试下每个选项不同之处。...例如,TJ君平时如果需要将字符换成大写操作比较多,我就可以这样设置设定这样一个按钮: 然后IDEA键盘映射里面设置这个按钮快捷键: 这样就可以直接通过 自己设置快捷键进行大写转换了

68830

TJ4DRadSet:自动驾驶4D成像雷达数据集

摘要 下一代高分辨率汽车雷达(4D成像雷达)可以提供额外高程测量值更密集点云,自动驾驶具有巨大三维传感潜力,本文介绍了一个名为TJ4DRadSet数据集,其中包含4D成像雷达数据用于自主驾驶研究...4D雷达则可以捕获前方视野(FOV)信息,覆盖前方驾驶视野,各传感器主要参数如表二所示,此外,GNSS信息被实时运动学(RTK)包含并校正,以实现高精度定位,其中包含自我车辆速度位置信息。...所有传感器ROS驱动器下工作,由于每个传感器以不同帧速率运行,因此我们使用数据到达时间作为时间戳来对齐数据,最终4D雷达激光雷达点云投影到图像,如图2所示。...图2.4D成像雷达激光雷达点云投影 C、 数据收集标注 TJ4DRadSet于2021第四季度中国苏州收集,图3记录了数据收集位置。...一些数据增强被用来增强网络鲁棒性,包括世界随机旋转随机缩放,使用Adam优化器对模型进行80个时期训练,评估阶段,选择平均精度(AP)作为度量,以评估每个类别的检测结果,具体而言,我们使用0.5

85120

【论文笔记】A Sequence-to-Sequence Approach to Dialogue State Tracking

首先,编码器可以不同领域中进行训练。不同域中架构描述可以一起使用。其次,一旦对编码器进行了 微调,它就可以用于处理具有新意图、插槽插槽值未见过模式。...模式元素可以是单词或短语,而话语标记形式跨度用于提取插槽值,如下图: 状态解码器是一个使用指针注意力 LSTM。它以 D_a,Ea 作为输入。...具体地说,它根据以下分布生成项 w 指针: k_w: 话语表示 D_a, 或者模式表示 E_a 项 w 表示 解码过程,解码器使用 Beam Search 来根据序列概率找到最佳指针序列...,r{tj}^K]) + b{span} 其中 个 token 作为跨度起始位置概率计算如下: p_{tj}^{starti} = \frac{e^{\alpha{tj}^{start} \...第 t 个回合,对于第 j 个域 - 插槽对,我们首先使用另一个预先训练 BERT 来获得候选列表每个聚合表示: y_l^{CLS} = BERT([CLS]\oplus V_l \oplus

2.2K10

【TBase开源版测评】轻松愉快去O选项:TBase

选型时主要考虑公司内部HTAP类型数据库,因为需要其类似Oracle既能进行离线任务计算,也可以承担频繁查询(其实是DAU只有100+对内服务…),并且后续扩容还比较方便,范围选项有TiDB...这里会先进行基本测试,之后会有使用过程问题与注意点。...,需要为每个分区子表维护索引,旧分区索引也不能自动继承。...禁用Nested Loop 其中t1t2部分join就耗时3m56s。对这一部分进行explain。...优化这个任务过程遇到了非常多次语句无法终止执行问题,pg_terminate_backend对应pid没有响应,DBA告知是节点CPU等资源打满无法响应SIGTERM,而且有时候并不是这个insert

1.6K30

ICA独立成分分析去除EEG伪影

2)通常对EEG眼电位(EOG)记录上进行时域或频域回归,以获得表征EEG伪影EEG通道出现扩散参数。...但是,EOG记录也包含大脑信号,因此要消退EOG活性也会不可避免地要从每个记录减去相关EEG信号一部分。...由于许多噪声源(包括肌肉噪声,电极噪声线路噪声)都没有明确参考通道,因此无法使用回归方法来消除它们。...研究结果表明,ICA可以有效地检测,分离消除EEG记录各种伪迹,其结果与使用基于回归或基于PCA方法获得结果相比更具有优势。...上面的假设23对于EEG(或MEG)数据是非常合理。给定足够输入数据,第一个假设也是合理。该方法使用由ICA算法得出空间滤波器,并且不需要每个伪像源提供参考通道。

1.4K10

从零开始学习3D可视化之数据对接(2)

日常使用互联网产品,很多都是前后端数据交互来完成,说到数据交互就不得不提AjaxWebSocket,它们可是数据交互利器,那么它们分别是什么?...image.png 下面来一个ThingJSWebSocket数据对接示例,点击【开启读取】进行数据读取,读取到数据将在数据详情面板进行显示,当温度值大于20℃时,车辆设置红色效果,点击【关闭读取...url: 'https://www.thingjs.com/static/models/storehouse' }); app.on('load', function() { // 设置摄像机位置目标点...property-panel tj-has-title tj-sizable tj-property-panel tj-pinned" style="position: absolute; right...` ` + data + `℃ `; $('.tj-group').prepend(tr); // 设置物体身上监控数据

32020

30秒就能学会代码?什么东西这么厉害?

当然不是,TJ君不仅没中彩票,还破财了一番,真实原因是TJ君手贱把自己赖以生存笔记本电脑屏幕给砸烂了! nonono,当然只是不小心行为不是故意施暴什么。...心疼TJ小伙伴记得给TJ君点个赞! 话说这两天TJ君电脑坏了在做啥呢,当然是到处学习,然后想给大家好好分享啦。...其实就是项目准备好了各种满足开发需求简短JavaScript代码片段,每个片段小巧可爱,所以只需30秒就能看懂用会。 同时还提供了搜索功能,可以按名称、标记、语言或使用代码段描述进行各种搜索。...每段小小代码包括了代码、说明示例,真的是麻雀虽小五脏俱全 需要用哪段就可以直接将代码复制到剪贴板。非常方便简单。...我们举个例子吖: 例如FOR循环,30秒代码片段,提供是如下代码 const files = [ 'foo.txt ', '.bar', ' ', 'baz.foo' ]; let filePaths

37330

加密解密、食谱、新冠序列,各种有趣开源项目Github上都有

今天TJ君就来大家分享几个自认为特别有趣开源项目: 加密库 这是一个从斯坦福大学传出开源加密库,基于JavaScript,可用在JS里加密、解密。...目前最新版本是1.08,让TJ君有一种在世界名校学习感觉。 项目有各种不同加密方式,像CBC模式、CCM模式、位阵列编解码等等,其实说实话TJ君也不是很懂,还要再研究研究。...这个项目上允许用户上传自己食谱照片,然后经过项目处理后,会在指定位置出现上传食谱及作者信息,也会根据食谱烹饪难度、烹饪时长、烹饪材料进行各种标注。...当然上传有一定格式要求,像 食谱应该以标题开头,第一行有一个#。顶部无空行,末端无尾行、文件名应该是菜名称,用连字符(-)分隔。...好吧,TJ君承认爱国情绪高涨了下,但是TJ君还是觉得中国美食无人能敌~~~ 如果您正在学习Spring Boot,那么推荐一个连载多年还在继续更新免费教程:http://blog.didispace.com

44720
领券