PDF文件格式(二):交叉引用类型“O“

这篇具有很好参考价值的文章主要介绍了PDF文件格式(二):交叉引用类型“O“。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PDF交叉引用类型有三种:“n”,"f","o";前两种比较常见,本文介绍第三种“o”类型。

type为"o"类型的引用在PDF文件中不能够直接找到对应的obj,它被以压缩的形式内嵌在其他的obj内,因此此类型的引用解析比较麻烦;

解析过程如下:

1. 获取交叉引用相关信息,先拿到其对应的ofs值,正常交叉引用的ofs表示对应obj的位置,但是这里ofs表示此交叉引用的信息被保存位置所在的obj位置;

2. 找到对应obj,获取其对应的"First"和"N"的值;First表示obj的stream解压之后需要解析的初始基本位置(base);N表示需要解析的次数,每次解析的内容是交叉引用obj号和stream解压之后需要解析的位置(ofs);最后交叉引用obj内容对应的解析位置是base+ofs,解析的内容是一个pdf的基本类型内容即可。到这里,交叉引用“o”类型的内容解析完毕。

实例:

PDF文件格式(二):交叉引用类型“O“,文档结构,pdf,java,服务器

这是一段交叉引用表,Index内容是[13 61],表示从13号Obj开始,到74号结束,这里我们解析46号obj,不过在在PDF文档内查找并没有看到46号obj的,经过解析得出46号obj类型为'o',因此不能直接在文档内找到obj:

PDF文件格式(二):交叉引用类型“O“,文档结构,pdf,java,服务器

上面没有46号obj; 接下来需要解析交叉引用表得到46号obj对应的ofs(解析方法在前文PDF文件格式一),不过此时的ofs表示需要定位的obj的号,这里得到46号obj的ofs为19(截图红线部位),下面就是19号obj内容:

PDF文件格式(二):交叉引用类型“O“,文档结构,pdf,java,服务器

19号obj内容可以看到First是219,N是28;然后解压缩stream内容如下:

PDF文件格式(二):交叉引用类型“O“,文档结构,pdf,java,服务器

219的位置就是"<</DA"的初始位置,即交叉引用内容位置;28表示从开头位置解析次数,这里解析第一次内容是45和0,表示45号obj和此obj对应内容位置为219+0,定位位置是“<<”,表示这个obj对应内容是字典,解析一个字典内容是“<</DA(/Helv 0 Tf 0 g )/DR<</Encoding<</PDFDocEncoding 10 0 R>>/Font<</Helv 8 0 R/ZaDb 9 0 R>>>>/Fields[]>>”,第二次解析内容是46和106,表示46号obj和对应内容位置是219+106,定位位置是"[",表示这个obj对应内容是数组,解析一个数组内容就是“[47 0 R 48 0 R]”;后面解析方法以此类推。

上面就是获取交叉引用类型为"o"内容的方法了。文章来源地址https://www.toymoban.com/news/detail-832329.html

到了这里,关于PDF文件格式(二):交叉引用类型“O“的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Office文档转为pdf格式(一)

    将Office文档(Word、Excel、Powerpoint)转为pdf格式,有多种实现方式,最常见的就是使用微软的Office组件。步骤如下: ① 打开NuGet包管理器,引用以下四个组件: MicrosoftOfficeCore Microsoft.Office.Interop.Word Microsoft.Office.Interop.Excel Microsoft.Office.Interop.PowerPoint          ② 编写Office帮助

    2024年02月06日
    浏览(41)
  • Office文档转pdf格式(二)

    上一篇我们使用的是微软的Office组件将Word、Excel、Powerpoint转为pdf格式,本文将使用WPS Office组件进行转换。步骤如下:  ① 添加WPS组件相关引用             注:wpsapi.dll 对应的是Word 文件API;etapi.dll 对应的是Excel 文件API;wppapi 对应的是PPT 文件API; ② 编写Office帮助类 Vi

    2024年02月06日
    浏览(28)
  • 批量PDF转HTML:高效管理与优化文档格式

    随着数字化时代的快速发展,PDF文件因其跨平台兼容性和良好的排版效果而被广泛应用。然而,在文本批量管理的场景中,我们可能需要将PDF文件转换为HTML格式,以便更好地进行编辑、搜索和定制。本文将为您介绍一种高效的方法,帮助您轻松实现PDF到HTML的批量转换。 首先

    2024年03月13日
    浏览(52)
  • 如何在电脑上免费更改 PDF 格式文档的字体大小?

    对于需要编辑或修改的 PDF 文件来说,更改其字体大小是一个非常常见且必要的工作。虽然 Adobe Acrobat Pro DC 等专业的 PDF 编辑软件可以帮助您完成此任务,但他们通常都需要昂贵的恢复。幸运的是,有许多免费的 PDF 编辑工具可供选择。在本文中,我们将介绍如何在电脑上免费

    2024年01月18日
    浏览(58)
  • 如何通过Java代码将 PDF文档转为 HTML格式

    虽然PDF文件适合用于打印和发布,但不适合所有类型的文档。例如,包含复杂图表和图形的文档可能无法在PDF中呈现得很好。但是HTML文件可以在任何可运行浏览器的计算机上进行阅读并显示。并且HTML还具有占用服务器资源较小,便于搜索引擎收录的特点。那么今天这篇文章就

    2024年02月05日
    浏览(50)
  • Springboot + Vue 上传Word、PDF文档并保留内部格式

    因为业务需求,上传Word文件需要编辑,但如果使用Blob方式,在数据库里存文件,就会造成格式消失。所以修改思路:上传文件到服务器本地,保证数据存储的完整性。 就是常规的传文件 这此采用的思路就是 把文件读取后,写入相对路径,考虑到文件业务误传,服务器源文

    2024年02月17日
    浏览(140)
  • ios 实现PDF,Word,Excel等文档类型的读取与预览

    最近正在研发的项目有一个需求: 允许用户将iCloud中的文档上传,实现文件的流转。 以前接触的项目对于资料类的上传大多是仅限于图片与视频。对于文档类(PDF, Word, Excel, Text等), 因苹果的沙箱环境限制,想要读取文件是无法实现的。目前虽然可以支持选择文件,但只能通

    2024年02月06日
    浏览(34)
  • 赛效:如何将PDF文件分割成单页的PDF文档

    1:打开wdashi点击PDF处理菜单里的“PDF分割”。 2:将本地PDF文件添加上去,在下方选择转换页码,在这里我们选择转换每一页。 3:点击右下角“开始转换”。 4:转换好后,点击绿色下载按钮将分割好的PDF文件保存到电脑本地。解压压缩包后,会发现每页内容都是一个单独的

    2024年02月12日
    浏览(33)
  • 【PDF密码】PDF文件为什么无法修改?为什么PDF文档不支持编辑?

    pdf文件大家应该都经常接触,但是不知道大家会遇到这种情况:有些PDF文件打开之后无法编辑?是什么原因呢?今天我们来分析一下都是那些原因导致的。 首先我们可以考虑一下,PDF文件中的内容是否是图片,如果确认是图片文件,那么我们想要编辑,就可以先使用PDF编辑器

    2024年01月22日
    浏览(55)
  • Springboot -- 按照模板生成docx、pdf文件,docx转pdf格式

    使用 poi-tl 根据模板生成 word 文件。 使用 xdocreport 将 docx 文件转换为 pdf 文件。 xdocreport 也支持根据模板导出 word ,但是 poi-tl 的功能更齐全,操作更简单,文档清晰。 poi-tl 、xdocreport 内部均依赖了 poi ,要注意两者中 poi 和 自身项目引用的 poi 的版本是否存在冲突。 使用 p

    2024年02月15日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包