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

如何用iText7获取PDF的书签页码

iText7是一款强大的Java库,用于处理PDF文件。它提供了丰富的功能,包括创建、编辑和提取PDF文档的内容。要使用iText7获取PDF的书签页码,可以按照以下步骤进行操作:

  1. 导入iText7库:首先,需要在项目中导入iText7库。可以通过在项目的构建文件中添加相应的依赖项来实现。具体的依赖项可以在iText官方网站上找到。
  2. 打开PDF文件:使用iText7的PdfReader类,可以打开要处理的PDF文件。可以通过指定文件路径或输入流的方式来打开文件。
  3. 获取书签信息:通过PdfReader对象的getOutlines()方法,可以获取PDF文件中的书签信息。书签信息以树形结构组织,可以通过递归遍历的方式获取每个书签的页码。
  4. 获取书签页码:对于每个书签,可以使用PdfDestination类的getPageNumber()方法获取其对应的页码。getPageNumber()方法返回一个整数值,表示书签所在的页码。

下面是一个示例代码,演示如何使用iText7获取PDF的书签页码:

代码语言:txt
复制
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfOutline;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.navigation.PdfDestination;

public class PDFBookmarkPageNumber {
    public static void main(String[] args) {
        String filePath = "path/to/your/pdf/file.pdf";

        try {
            PdfReader reader = new PdfReader(filePath);
            PdfDocument document = new PdfDocument(reader);

            PdfOutline rootOutline = document.getOutlines(false);
            printBookmarkPageNumbers(rootOutline, "");

            document.close();
            reader.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void printBookmarkPageNumbers(PdfOutline outline, String indent) {
        System.out.println(indent + "Title: " + outline.getTitle());
        System.out.println(indent + "Page Number: " + getPageNumber(outline.getDestination()));

        PdfOutline child = outline.getFirstChild();
        while (child != null) {
            printBookmarkPageNumbers(child, indent + "  ");
            child = child.getNext();
        }
    }

    public static int getPageNumber(PdfDestination destination) {
        return destination != null ? destination.retrievePageNumber() + 1 : -1;
    }
}

在上面的示例代码中,首先通过PdfReader打开PDF文件,然后使用getOutlines()方法获取书签信息。接下来,通过递归遍历书签树,使用getPageNumber()方法获取每个书签的页码,并打印出来。

请注意,这只是一个简单的示例,实际应用中可能需要根据具体需求进行适当的修改和扩展。

腾讯云相关产品:腾讯云提供了丰富的云计算服务,包括云服务器、云数据库、云存储等。对于PDF处理,可以使用腾讯云的云函数(SCF)和对象存储(COS)服务。通过编写云函数,结合iText7库,可以实现在腾讯云上获取PDF的书签页码。具体的产品介绍和使用方法可以参考腾讯云官方文档。

参考链接:

  • iText官方网站:https://itextpdf.com/
  • 腾讯云云函数(SCF):https://cloud.tencent.com/product/scf
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

itext7史上最全实战总结

前言 最近有个需求需要我用Java手动写一份PDF报告,经过考察几种pdf开源代码,最终选取了itext7,此版本为7.1.11,由于发现网上关于该工具博文比较少,特别是实战博文几乎没有,在我踩完各种坑...配置文件 项目采用了Spring Cloud config所以配置在git上,仅仅研究itext7不需要用到数据库等功能,请直接运行PdfMain类main方法,即可生成模拟PDF报告 1.3....Html段落转Pdf段落 我们可能遇到把一段Html文本转换成itext7段落放进来,此时需要用到它htmlToPdf模块,该模块对应POM <!...由于目录不确定,所以后续内容页码其实也是不确定,也就是说页码也不是一页页可以添加过去 而经过实践你会发现,我们不能够回到前几页去修改已存在页面,因为会提示你已经flush了,不能修改。...于是研究读取原pdf在原pdf上修改,二次渲染时候填上页码及移动页面,主要代码如下,包括了读取中间文件,移动目录,添加每页页码 PdfReader reader = null; PdfWriter writer

6.9K31

C# iText 7 切分PDF,处理PDF页面大小

一、itext 我要使用itext做一个pdf页面大小一致性处理,然后再根据数据切分出需要pdf. iText官网有关于它介绍,https://itextpdf.com/ 然后在官网可以查找api...二、处理PDF页面大小一致 由于原始PDF 是扫描图片合成来,有些页面扫描图片规格不一致,导致pdf阅读性很差。...对于这个pdf我进行处理,首先是在nuget 里面搜索 itext 进行安装,使用itext7。...页码,将原来PDF页码对象拷贝PdfFormXObject到要生成PDF文档中,首先要copy页面对象才能使用,不然直接获取page对象是原来文档,我们无法操作。...处理后PDF: 三、切分PDF 切分PDF 就比较简单了,直接从原始文件中拷贝页面到新PDF文档中就行了。

1.2K40
  • 这才叫良心软件!!

    同时使用者也需要留意源代码采用“良心授权”协议;使用源代码开发了新软件并获得收益,应将收益中不低于千分之一金额捐赠给社会弱势群体。...识别书签 支持对 PDF 文档标签进行编辑,支持自动根据你文档生成对应书签、导出/导入书签文档、更改页码、合并标签、设置标签格式等。...提取图片 对 PDF 文档里面的图片批量导出,可以设置需要提取页码范围、图片合并为PNG、导出批注内图片、文件重命名等多种设定。...贴心PDF书签编辑器 带有阅读界面(具有便于阅读竖排文档从右到左阅读方式),可批量修改PDF书签属性(颜色、样式、目标页码、缩放比例等),在书签中执行查找替换(支持正则表达式及XPath匹配、可快速选择篇...替换字库 替换文档中使用字体库;嵌入字库到PDF文档,消除复制文本时乱码,使之可在没有字库设备(Kindle等电子书阅读器)上阅读。

    1.4K20

    PDFPatcher开源软件

    贴心PDF书签编辑器:带有阅读界面(具有便于阅读竖排文档从右到左阅读方式),可批量修改PDF书签属性(颜色、样式、目标页码、缩放比例等),书签可精确定位到页面中间;在书签中执行查找替换(支持正则表达式及...制作PDF文件:合并已有PDF文件或图片,生成新PDF文件;合并后PDF文档带有原文档书签,还可挂上新书签(或根据文件名生成),新书签文本和样式可自定义;合并PDF文档可指定统一页面尺寸,以便打印和阅读...拆分或合并PDF文件,并保留原文件书签或挂上新书签。 高速无损导出PDF文档图片。 将PDF页面转换为图片。...调用微软 Office 图像识别引擎分析PDF文档图片中文字;将图片PDF目录页转换为PDF书签。识别结果可写入PDF文件。...替换字体:替换文档中使用字体;嵌入字库到PDF文档,消除复制文本时乱码,使之可在没有字库设备(Kindle等电子书阅读器)上阅读。

    2.8K10

    Python利用PyPDF2库获取PDF文件总页码实例

    Python中可以利用PyPDF2库来获取pdf文件页码,可以根据下面的方法一步步进行下去: 1、首先,要安装PyPDF2库,利用以下命令即可: pip install PyPDF2 2、接着...其中我新建了一个py文件,名为file_utils.py,代码如下: from PyPDF2 import PdfFileReader def get_num_pages(file_path): """ 获取文件总页码...网上找了下python合并pdf脚本,发现也没有添加书签功能,有添加书签也不是很灵活。 所有对网上找一个python程序进行了升级,可以实现合并pdf并每个章节加入书签。...pdf将其合并输出到一个pdf文件中,输出pdf文件默认带书签书签名为之前文件名 # 默认情况下原始文件书签不会导入,使用import_bookmarks=True可以将原文件所带书签也导入到输出...以上这篇Python利用PyPDF2库获取PDF文件总页码实例就是小编分享给大家全部内容了,希望能给大家一个参考。

    1.9K10

    pdf拆分保留书签_pdf补丁

    导出信息文件:将PDF文档中元数据、阅读器初始状态、页码设置、页面设置、书签等信息导出成可编辑XML文件。...补丁生成新文件: 将上述信息文件和已有PDF文件合并,生成新PDF文档,该PDF文档具有XML信息文件设置(页面设置、书签等)。...通过导入信息文件,可实现如下功能: 修改文档元数据(作者、主题、关键词等)。 添加、修改或删除PDF文档书签,设置书签文字颜色、打开或收拢状态、点击后跳转位置及页面缩放比例等。...添加或修改页面内链接。 添加或更改PDF文档逻辑页码编号。 更改阅读器初始设置(显示比例、界面等)。 裁剪或扩大页面尺寸。 调整页面旋转方向。...生成文件时可选保留源 PDF 文件书签及页面链接。   生成文件可选关闭书签。 修复错误:   导出页面内容或生成文件时,输出文件异常变大问题。

    1.6K20

    Office三件套批量转PDF以及PDF书签读写与加水印

    书签提取与写入 PDF书签提取 PDF书签保存到文件 从文件读取PDF书签数据 向PDF写入书签数据 给PDF加水印 生成水印PDF文件 PyPDF2库批量加水印 拷贝书签 加水印同时复制书签 PyMuPDF...书签提取与写入 后面我们打算使用 PyPDF2 来批量加水印,比较尴尬是用这个库只能重新创建 PDF 文件,导致书签丢失,所以我们需要事先能提取标签并写入才行。...顺便就可以写出一套可以给 PDF书签方法。...] = i # 保存每个标题对应标签数据,包括层级,标题和页码索引(页码-1) bookmark = [] def get_pdf_Bookmark_inter(outlines...idnum2pagenum[page.indirectRef.idnum] = i # 保存每个标题对应标签数据,包括层级,标题和页码索引(页码-1) def get_pdf_Bookmark_inter

    2.9K10

    java PDF开源库选择与iText发展历史

    转眼间,我写iText7系列已经有一年多了,还记得最开始时候是因为兴趣才翻译iText,不过随着慢慢翻译文章才发现iText强大之处,最近也是调研了整个java PDF开源库生态圈...-1b标准 使用标准Java打印API打印PDF文档 另存为图片文件,PNG、JPEG 使用内嵌字体和图片从头创建PDF 电子签名PDF文件 iText: PDFBox里面的特性iText都有 iText...iText这个许可协议我就觉得很好,我们能够第一时间拿到所有源码,使用其功能,能自己评估其性能,像我们这种学生党用来学习研究没有那么多顾虑,等我们需要商业用途时候,那时也是在企业了,出点钱获取服务也是理所应当...: 图3. iText各个版本比较图 具体版本更新,可以访问官网 3.3 iText7及各个插件版本 iText7有很多插件,能帮助我们完成各种功能,具体版本号如下: 图...发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    6.7K30

    苏生不惑又写了个小工具

    之前分享过我写一些工具整理下苏生不惑开发过那些软件和脚本,不过导出公众号pdf文件太多想合并成一个,于是用PDFShaper合并pdf,但合并后pdf没有书签: 于是用python写了个pdf...合并工具,这里以莫言公众号文章为例,先下载他所有公众号文章,详情见我之前文章 一键批量下载微信公众号文章内容/图片/封面/视频/音频,支持导出html和pdf格式,包含阅读数/点赞数/在看数/留言数...html先转换成pdf: 代码如下: def to_pdf(): import pdfkit print('导出 PDF...')...() # to_word() 然后将转换pdf合并成一个文件并生成书签。...",'wb') as f: file_writer.write(f) 合并后效果: 点击左侧书签跳转到对应文章pdf(含留言): 当然也可以导出pdf书签到excel,包含书签名和页码

    48420

    PDF内容自动提取,想取哪些页面就取哪些页面! | PA实战案例

    - 1 - 明确单页或范围 首先,如果是要提取页面是明确,比如明确某一页(第3页)或某一段页码范围(第8-10页)等,非常简单,在提取PDF文件内容步骤里进行简单设置即可: 1、取某一页(第...3页) 在“要提取页面”中选择“单个”,“单个页码”中输入具体页码即可: 2、取某一段页码范围(第8-10页 在“要提取页面”中选择“范围”,并在“起始页码”和“结束页码”中分别输入相应数值即可...,而是还有更加简便方法: 先“将 PDF 页面提取到新 PDF”,然后再从新pdf文件中提取所有页面——因为“将 PDF 页面提取到新 PDF”功能直接支持非连续页面的提取: - 3 - 更加复杂情况...比如,很多企业pdf报告,前面包含数据页面不固定,最后几页都是一些例行备注说明,这样,我们要动态地去取前面的数据页面,最关键是能获取到整个pdf报告页数。...但是,目前Power Automate里却没有支持获取pdf文件页数操作或方法,结果导致这个问题需要通过Power Automate自动调用第三方工具来实现,比较复杂,我将在后面专文讲解,并有重要资源推荐给大家

    1.4K20

    免费可视化Web报表工具,JimuReport v1.5.0版本发布

    秉承“简单、易用、专业”产品理念,极大降低报表开发难度、缩短开发周期、节省成本、解决各类报表难题,完全免费!...导出功能,移除了itext7(解决AGPL开源协议问题); 重点功能 修复fastjson漏洞 重构pdf导出 Issues处理 报表导出时,出现错误,去掉样式#I52O77 查询条件下拉单选占位文本描述显示不正确...、大屏,出入库单、销售单、财务报表、合同、监控大屏、旅游数据大屏等 #系统截图 报表设计器(专业一流 数据可视化,解决各类报表难题) [up-a2a8557722593e6c5a5e8f015a0df2b70e9...22096123c5b6a10a801967c33cc33a7af11.png] 数据报表斑马线 [up-e77ba28f6fb56d1147c13388e7e5d19d1bc.png] #功能清单 ├─报表设计器 │ ├─数据源 │ │ ├─支持多种数据源,Oracle...;支持导出excel、pdf带参数 │ ├─打印设置 │ │ ├─打印区域设置 │ │ ├─打印机设置 │ │ ├─预览 │ │ ├─打印页码设置 ├─大屏设计器 │ ├─系统功能

    60040

    PowerBI 2018 8月更新 一键导出PDF报告集合

    报表方面: 全报表一键导出PDF 书签分组 主题正式发布 分析方面: 通过字段颜色值设置条件格式 集成 Python 问答改进 建模方面: 度量值支持数据分类 DAX新增统计类函数 自定义可视化以及数据连接可进一步参考官方文档...一键导出PDF 故名思议,在 Power BI Desktop 可一键导出 PDF 文档,这没什么好说,点击这里: 这里要说是限制:在本地导出 PDF 很像是Power BI Desktop内部实现了一个自动化装置挨个页面截图然后组合成...PDF文件。...这里显示一个特殊结果: 可以看出缺点: 导出方式比较机械,无法做细节设置 不支持页码等(可手工在报表页面添加) 不支持壁纸导出 可以看出优点: 可以导出除壁纸外所有元素,包括自定义视觉元素 完全按照报表尺寸导出...,也就支持大尺寸报表页 支持书签分组 在实际项目中,书签会大量出现,包括实现跳转、导航等,随着 PowerBI 实现复杂报表项目,书签很重要,因此书签分组变得很有意义。

    3.4K40

    Word 域代码:TOA(引文目录)域「建议收藏」

    注释如果由 TOC 域创建目录影响文档分页,则可能需要再次更新域以得到正确页码。...使用 /c 开关可创建一个带有标签和编号题注目录。 /b 书签名 只从指定书签所标记文档部分收集目录项。.../n 级别 在目录中省略页码。除非指定目录项级别范围,否则所有级别的页码都将省略。例如: { TOC /n 3-4 } 省略级别 3 和级别 4 页码。...指定分隔符最多为 5 个字符而且必须用引号括起来。 /s 标识符 在页码前加入章节号之类号码。章节或其他项必须用 SEQ 域编号。...{ TOC /b Part1 /o “1-3” } 文档中用书签“Part1”标记部分内,用内置标题样式“标题 1”、“标题 2”、“标题 3”设置所有标题。

    2.3K10

    如何使用python提取pdf表格及文本,并保存到excel

    这次介绍一个开源python工具库-pdfplumber,可以方便地获取pdf各种信息,包括文本、表格、图表、尺寸等。...pdfplumber在github上有英文官方文档,后面我们会捡重点讲解,先看下如何用pdfplumber提取pdf表格?...「pdfplumber.PDF类」 属性 描述 .metadata 获取pdf基础信息,返回字典 .pages 一个包含pdfplumber.Page实例列表,每一个实例代表pdf每一页信息。...("e:\\nba2.pdf") 获取pdf文档信息 # 通过pdfplumber.PDFmetadata属性获取pdf信息 pdf.metadata 输出: 这些是pdf基础信息,包括作者...= pdf.pages[0] # 查看页码 print('页码:',first_page.page_number) # 查看页宽 print('页宽:'first_page.width) # 查看页高

    3K30

    Python处理PDF——PyMuPDF安装与使用

    它支持多种文档格式,PDF、XPS、OpenXPS、CBZ、EPUB和FictionBook 2。您可以使用移动查看器对PDF文档进行注释和填写表单(这个功能很快也将应用于桌面查看器)。...命令行工具允许您注释、编辑文档,并将文档转换为其他格式,HTML、SVG、PDF和CBZ。您还可以使用Javascript编写脚本来操作文档。...功能 对于所有支持文档类型可以: 解密文件 - 访问元信息、链接和书签 - 以栅格格式(PNG和其他格式)或矢量格式SVG呈现页面 - 搜索文本 - 提取文本和图像 - 转换为其他格式:PDF...Document.select()将PDF压缩到选定页面,参数是要保留页码序列。这些整数都必须在0<=i<page_ count范围内。执行时,此列表中缺少所有页面都将被删除。...因此,您可以轻松地使用创建新PDF: - 第一页或最后10页- 仅奇数页或偶数页(用于双面打印)- 包含或不包含给定文本页- 颠倒页面顺序 保存新文档将包含仍然有效链接、注释和书签(i.a.w

    7.3K30
    领券