PyPDF2为PDF文件起始页添加罗马数字
问题描述
在阅读PDF文件时偶尔需要ctrl+G
跳转到指定页面,然而跳转的页面是PDF的页码而不是正文的页码(由于正文并不是从PDF第一页开始)。针对这个问题可以为前几页非正文部分设置页面标签,之后再阅读PDF就是数字页码就是从正文开始计算。
调整结果如图所示,左图为添加罗马数字标签,右图为未调整(标签即为PDF页码)。
代码
import PyPDF2
import PyPDF2.generic as PDFdef pdf_pagelabels_roman():number_type = PDF.DictionaryObject()number_type.update({PDF.NameObject("/S"):PDF.NameObject("/r")})return number_typedef pdf_pagelabels_decimal():number_type = PDF.DictionaryObject()number_type.update({PDF.NameObject("/S"):PDF.NameObject("/D")})return number_typedef pdf_pagelabels_decimal_with_offset(offset):number_type = pdf_pagelabels_decimal()number_type.update({PDF.NameObject("/St"):PDF.NumberObject(offset)})return number_typedef add_pagelabels(output_pdf, offset):nums_array = PDF.ArrayObject()# Each entry consists of an index followed by a page label...nums_array.append(PDF.NumberObject(0)) # index [0, offset-1] -> label [i, ii ...]nums_array.append(pdf_pagelabels_roman()) # Roman numerals# Each entry consists of an index followed by a page label...nums_array.append(PDF.NumberObject(offset-1)) # index [offset, ...] -> label [1, 2, ...]nums_array.append(pdf_pagelabels_decimal_with_offset(1)) # Decimal numbers, with Offsetpage_numbers = PDF.DictionaryObject()page_numbers.update({PDF.NameObject("/Nums"):nums_array})page_labels = PDF.DictionaryObject()page_labels.update({PDF.NameObject("/PageLabels"): page_numbers})root_obj = output_pdf._root_objectroot_obj.update(page_labels)import os
def adjust_page_number(pdf_path, offset):pdf_writer = PyPDF2.PdfWriter()with open(pdf_path, 'rb') as file:pdf_reader = PyPDF2.PdfReader(file)for i in range(0, len(pdf_reader.pages)):page = pdf_reader.pages[i]pdf_writer.add_page(page)add_pagelabels(pdf_writer, offset)pdf_writer.write(os.path.join(os.path.dirname(pdf_path), 'output.pdf'))pdf_writer.close()if __name__ == '__main__':adjust_page_number('./辅导.pdf', 1)
参考
PyPDF2为PDF文件起始页添加罗马数字相关推荐
- python PyPDF2处理PDF文件
python PyPDF2处理PDF文件 安装PyPDF2 pip install PyPDF2 官方文档: https://pypdf2.readthedocs.io/en/latest/ 导入模块 ...
- python读取pdf文档书签 bookmark_用Python为PDF文件批量添加书签
平时看一些大部头的技术书籍,大多数都是PDF版的,而且有一些书籍是影印扫描版的,几百上千页的书,没有任何书签,想要找到一个章节的位置非常费劲.那么就想,能不能搞一个工具,来自动地为这些大部头的PDF书 ...
- WaterMarker - pdf 文件水印添加工具
WaterMarker - pdf 文件水印添加工具 写在前面 编写环境 核心代码分析 创建水印函数 添加水印函数 主函数 使用案例 脚本具体参数如下 具体案例 写在最后 写在前面 昨天想给 pdf ...
- java pdf添加透明水印_如何在PDF文件中添加透明水印
原标题:如何在PDF文件中添加透明水印 有些文件添加水印,但是又不想水印影响文件的使用有时候会设置透明水印,那么PDF怎么设置透明水印呢,应该有很多的小伙伴们都很好奇应该怎么做吧,接下来就为大家分享一 ...
- PDF文件如何添加页面或插入其他PDF页面
在处理PDF文件的时候如果要在文档中添加插入一个页面,或者是插入其他pdf文件页面的话该怎样操作?编辑PDF文件是否像office文档那样操作简单?下面就来讲下PDF文件怎么添加页面的. 因为PD ...
- PyPDF2读取PDF文件内容保存到本地TXT
利用PyPDF2读取PDF文件内容保存到本地TXT from PyPDF2.pdf import PdfFileReader import pandas as pddef Pdf_to_txt(pdf ...
- PDF文件如何添加签名
PDF文件如何添加签名?在我们平常的工作中,许多文件都需要签名确认执行.如果有一份PDF文件需要签名,屏幕前的你知道应该如何操作吗?如果你并不了解PDF文件应该如何添加签名,那么没关系,继续往下阅读你 ...
- java pdf添加透明水印_如何使用PDF编辑工具在PDF文件中添加透明水印
PDF 文件在修改编辑的时候会使用到 PDF 编辑工具,不管是工 作中还是生活中,都会使用到 PDF 文件,当我们需要给 PDF 文件添 加透明水印时,该怎么操作呢,是不是有很多的小伙伴也很好奇, 那 ...
- 想要在PDF文件中添加便贴,不妨用迅捷PDF编辑器
pdf文档是一个比较特别的文档,他编辑起来会比较麻烦,不是普通的办公软件就可以实现的,向WPS他们编辑的话就需要花钱,但是也有PDF编辑器可以做到,比如小编见天说的迅捷PDF编辑器一样,他的功能确定很 ...
最新文章
- 在ubuntu上安装最新稳定版本的node及npm
- 看来我的计时器的应用还要加强才行呀
- 半透明AlphaBlend
- matlab 常用m文件,MATLAB基础课程 第三章 M文件知识(4)
- 数据链路层的是三个基本问题
- 营销获客场景下的工具类产品规划
- easyPR源码解析之plate_judge.h
- ajax的post方式传数组参数
- wdatepicker不显示秒_为什么别人电脑开机只要3秒,你有固态硬盘却要等上18秒?...
- 别告诉我你懂Javascript
- Collectors.toList()
- Java JSON转换为map
- GPU 编程与CG 语言之阳春白雪下里巴人——CG学习读书笔记之数学函数(之二)。
- 复旦赵卫东:大数据的系统观
- c# 实现语音播报功能 转发
- 练习:测测你优势教养的程度
- 5G基带芯片之战现状:一二三分别对应联发科华为高通
- 降维算法-LDA线性判别分析实例
- vmware17去虚拟化教程网络安全
- 集合中所有子集元素之和