热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PDF文件的书签批量自动导入和导出PDFBookmarkExchanger

PDFBookmark-Exchanger2020-01更新:(ver1.0.2-final):----修正PDF书签指向的页面位置为相对位置ÿ

PDFBookmark-Exchanger 2020-01 更新: (ver 1.0.2-final):
---- 修正PDF书签指向的页面位置为相对位置,而不再使用绝对位置。

此软件需要操作系统安装有JDK或者JRE方能运行, Oracle的官方下面地址 点这里JDK


文章目录

  • 1.前言
  • 2. PDFBookmark-Exchanger
  • 3.书签的格式
  • 4.操作建议
  • 5.软件下载及使用实例
    • 1.导出书签
    • 2.导入书签


1.前言

PDF文件全称portable document format,就是便携文档格式,是所有平台都支持浏览的文档格式。无论你用什么系统,你的屏幕显示和打印输出就是发布者想要的样子。此即“输出一致”。
在文档打印、论文撰写、信息交流,已经电子书阅读方面,PDF文档使用的越来越普遍。
PDF文件的书签(或者大纲-Outline) 提供了文档的组织结构,阅读文档时非常方便。
然而,很多PDF书籍没有书签,而书签功能又是如此重要,比如:


  • 书签导入:我们经常可以在amazon, JD或者出版社网站上浏览到相应书籍的书签,怎么将这些书签导入相应的PDF文件呢?
  • 书签导出: 从已经有书签的PDF文件中导出书签
  • 书签交换: 同一本书籍的2个不同PDF文件,清晰的文件没有书签,而不清晰的文件则带有书签,怎么方便的在PDF文件之间转移书签呢?

对于上述的三个简单功能,在网上始终未找到软件能较好提供这些功能,因此自己实现了下述软件: PDFBookmark-Exchanger


2. PDFBookmark-Exchanger

软件基于Java进行开发,可以实现跨平台使用。运行软件必须安装有JRE(Java运行时环境)。软件界面如下:

1) Load: 加载PDF文件并导出书签
2) Save: 将书签导入到PDF文件中
3) Open: 打开Text(文本文件)中的书签内容
4) Store: 保存当前书签内容到文本文件中
5)书签页码对应关系设定: 设定书签的页码和实际PDF文件页码的对应关系,默认为1对1

在这里插入图片描述


3.书签的格式

欲导入和导出的书签格式规定如下:


  1. 每一行代表一个书签
  2. 空行#字符开头的部分做为注释,被自动忽略
  3. 每行书签的格式为: 【0或者多个缩进】【书签名】【多个空白字符】【页码】

  • 书签缩进: 以Tab键或者连续4个空格键或者中文全角空格作为一个子书签缩进,依次类推
  • 书签名: 不能含有3个及以上空格或者Tab键或者#字符
  • 书签名和页码的分隔: 至少一个Tab键或者连续4个空格或者连续2个全角空格及以上做为分隔标记

  1. 如果书签内容保存到Text(文本文件)中,则文件必须以UTF-8编码存储

在这里插入图片描述


4.操作建议

以导入书签到PDF文件中为例。


  1. 首先从网上找到到书签内容, 如果有页码最好,否则需要自己输入页码。
  2. 输入页码:将书签内容拷贝到Excel文件中,每行代表一个书签,然后在另外的列中输入书签对应页码
  3. 将书签及页码拷贝到文本编辑器中,例如: Editplus, Notepad++等,使用这些编辑器提供的列选模式,调整缩进和分隔符合上节中的书签格式
  4. 书签的页面往往从1开始,而实际的PDF文件因为包含书籍封面等信息,真实页面和书签页码之间有偏移,打开PDF文件,看看书签中的页面和对应的实际页码是多少,填入软件中。
  5. 点击”Save”按钮即可导入PDF文件中。

5.软件下载及使用实例

书签缩进: PDFBookmark-Exchanger 链接:https://pan.baidu.com/s/1jIeTsUy 密码: i5un
(下载后,windows环境点击“run.bat”, Linux环境运行 “run.sh ”即可启动软件)·

csdn下载: https://download.csdn.net/download/jhsword/12266856


1.导出书签

load -> open (选择文件) 此时在下面的文本区域显示选中文件的目录。
在这里插入图片描述
在这里插入图片描述
如果需要将导出的目录存储在文件中,点击右上角的 “store”,选择存储位置,输入文件名,点击 “save” 即可.
在这里插入图片描述


2.导入书签

在这里插入图片描述
这时显示书签内容,设定书签的页码和实际PDF文件页码的对应关系:
在这里插入图片描述
然后点击 save,选择导入书签的pdf文件:
在这里插入图片描述
导入成功提示:
在这里插入图片描述
打开pdf文件,查看导入成功的书签:
在这里插入图片描述


推荐阅读
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • PDF内容编辑的两种小方法,你知道怎么操作吗?
    本文介绍了两种PDF内容编辑的方法:迅捷PDF编辑器和Adobe Acrobat DC。使用迅捷PDF编辑器,用户可以通过选择需要更改的文字内容并设置字体形式、大小和颜色来编辑PDF文件。而使用Adobe Acrobat DC,则可以通过在软件中点击编辑来编辑PDF文件。PDF文件的编辑可以帮助办公人员进行文件内容的修改和定制。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 移动端常用单位——rem的使用方法和注意事项
    本文介绍了移动端常用的单位rem的使用方法和注意事项,包括px、%、em、vw、vh等其他常用单位的比较。同时还介绍了如何通过JS获取视口宽度并动态调整rem的值,以适应不同设备的屏幕大小。此外,还提到了rem目前在移动端的主流地位。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
author-avatar
宛雨万青惠雯
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有