使用Python批量合并PDF文件(带书签功能)

网上找了几个合并pdf的软件,发现不是很好用,一般都没有添加书签的功能。

在网上查找了python合并pdf的脚本,发现也没有添加书签的功能。于是自己动手编写了一个小工具,代码如下:

 1 #!/usr/bin/env python3
 2 # -*- coding: utf-8 -*-
 3 ‘‘‘
 4    #文件名:pdfmerge.py
 5    本脚本用来合并pdf文件,输出的pdf文件按输入的pdf文件名生成书签
 6    使用示例如下:
 7    python pdfmerge.py -p "D:\pdf-files" -o "merged-out.pdf" -b True‘
 8
 9    示例说明:
10    要合并的pdf文件所在的路径: D:\pdf-files
11    合并后的pdf文件的输出文件名:merged-out.pdf
12    是否从pdf文件中导入书签的值:True
13 ‘‘‘
14 import os
15 from argparse import ArgumentParser, RawTextHelpFormatter
16 from PyPDF2 import PdfFileReader, PdfFileWriter, PdfFileMerger
17
18 def getfilenames(filepath=‘‘,filelist_out=[],file_ext=‘all‘):
19     # 遍历filepath下的所有文件,包括子目录下的文件
20     for fpath, dirs, fs in os.walk(filepath):
21         for f in fs:
22             fi_d = os.path.join(fpath, f)
23             if  file_ext == ‘all‘:
24                 filelist_out.append(fi_d)
25             elif os.path.splitext(fi_d)[1] == file_ext:
26                 filelist_out.append(fi_d)
27             else:
28                 pass
29     return filelist_out
30
31 def mergefiles(path, output_filename, import_bookmarks=False):
32     # 遍历目录下的所有pdf将其合并输出到一个pdf文件中,输出的pdf文件默认带书签,书签名为之前的文件名
33     # 默认情况下原始文件的书签不会导入,使用import_bookmarks=True可以将原文件所带的书签也导入到输出的pdf文件中
34     merger = PdfFileMerger()
35     filelist = getfilenames(filepath=path, file_ext=‘.pdf‘)
36
37     for filename in filelist:
38         f=open(filename, ‘rb‘)
39         file_rd=PdfFileReader(f)
40         short_filename=os.path.basename(os.path.splitext(filename)[0])
41         merger.append(file_rd, bookmark=short_filename, import_bookmarks=import_bookmarks)
42         print(‘合并文件:%s‘%(filename))
43         f.close()
44     out_filename=os.path.join(os.path.abspath(path), output_filename)
45     merger.write(out_filename)
46     print(‘合并后的输出文件:%s‘%(out_filename))
47     merger.close()
48
49 if __name__ == "__main__":
50     description="\n本脚本用来合并pdf文件,输出的pdf文件按输入的pdf文件名生成书签\n使用示例如下:"
51     description=description+‘\npython pdfmerge.py -p "D:\pdf-files" -o "merged-out.pdf" -b True‘
52     description=description+‘\n\n‘+"示例说明:"
53     description=description+‘\n‘+"要合并的pdf文件所在的路径: D:\pdf-files"
54     description=description+‘\n‘+"合并后的pdf文件的输出文件名:merged-out.pdf"
55     description=description+‘\n‘+"是否从pdf文件中导入书签的值:True"
56
57     # 添加程序帮助,程序帮助支持换行符号
58     parser = ArgumentParser(description=description, formatter_class=RawTextHelpFormatter)
59
60     # 添加命令行选项
61
62     parser.add_argument("-p", "--path",
63                         dest="path",
64                         default=".",
65                         help="PDF文件所在目录")
66     parser.add_argument("-o", "--output",
67                         dest="output_filename",
68                         default="merged.pdf",
69                         help="合并PDF的输出文件名",
70                         metavar="FILE")
71     parser.add_argument("-b", "--bookmark",
72                     dest="import_bookmarks",
73                     default="False",
74                     help="是否从pdf文件中导入书签,值可以是‘True‘或者‘False‘")
75
76     args = parser.parse_args()
77     mergefiles(args.path, args.output_filename, args.import_bookmarks)

原文地址:https://www.cnblogs.com/weiqi/p/8207236.html

时间: 2024-10-14 03:56:38

使用Python批量合并PDF文件(带书签功能)的相关文章

php如何利用python实现对pdf文件的操作(读写、合并分割)

php如何利用python实现对pdf文件的操作 需求:在PHP里实现了把8.pdf的前4页pdf文件截取出来生成新的pdf文件. 详细步骤如下: 1. 安装python第三方库PyPDF2 前提:python必须是3.x版本以上,必要时需要升级pip3,命令如下:pip3 install --upgrade pipPyPDF 自 2010年 12月开始就不在更新了,PyPDF2 接棒 PyPDF, 在此使用PyPDF2. 安装命令:pip install PyPDF2 2.编写python脚本

CAD批量转PDF文件什么软甲比较好

DWG.DXF等图纸格式都是我们常用的CAD图纸文件,因为这些文件打开需要借助专业的CAD软件进行打开,因此为了方便我们给客户进行查看,通过情况下会选择将CAD转换成更易查看保存的PDF文件,那么如何将CAD批量转换成PDF文件?CAD批量转PDF文件用什么软件? 一.CAD批量转PDF文件用什么软件 想要将批量的CAD图纸转换成PDF文件,那么可以选择使用CAD转PDF转换器(http://cad.xjpdf.com),这款软件支持 DWG.DXF.DWT等常用的图纸格式,利用这款软件可以轻松

Python批量处理CSV文件

#encoding: utf-8 __author__ = 'DELL' import csv import glob import datetime import sys import os reload(sys) #中文错误 sys.setdefaultencoding( "utf-8" ) ''' @author likehua CSV批处理 ''' class BatchProcessCSV: def __init__(self,inputfolder="c:\\in

python批量改动指定文件夹文件名称

这小样例仅仅要是说明用python怎么批量改动指定文件夹的文件名称: 记得要把脚本跟改动的文件放在同一个文件夹下 #encoding:utf-8 import os import sys files = os.listdir('D:\\1') #路径能够自己 for name in files: a = os.path.splitext(name) if a[1] == '.txt': #txt能够自己手动改动成你想改的文件名称 newname = a[0]+'.py' #.py也是能够改动 p

如何在线批量删除PDF文件内的空白页

如何在线批量删除PDF文件内的空白页,办公中经常会接触到几千页的PDF文件,然而这些文件中存在着空白页的漏洞,严重影响到了PDF的整体性,那如何将这些空白页批量删除掉呢,请看下面操作.1.打开电脑,进入百度首页,搜索迅捷PDF在线转换器. 2.进入转换器界面后,在导航栏上点击文档处理,在下拉框中找到PDF删除页.3.点进PDF删除页后,点击选择文件加入待删除页的PDF文件,也可以直接拖动添加.4.添加完需要删除页的PDF文件,设置需要删除的页码后,点击开始删除按钮.5.点击删除按钮后,将自动删除

如何合并PDF文件?教你几种超简单的方法

如何合并PDF文件呢?我们在工作中会遇到很多难以处理的文件,比如PDF文件就是一种,尤其是将多个PDF文件合并成一个PDF文件,,其实大多数人都不知道将其合并,盲目的在网上找相关的方法,到头来还是不行,达不到我们理想的预期,下面我们就一起来了解一下合并PDF文件的方法吧!操作方法一:使用工具:迅捷PDF编辑器推荐指数:☆☆☆☆☆工具介绍:迅捷PDF编辑器是一款专业的pdf编辑软件,支持PDF文件内容添加.PDF内容修改.绘图.标注.PDF添加水印等操作.操作步骤:1:首先将迅捷PDF编辑器打开,

怎样批量删除PDF文件中的注释

日常我们在阅读一些PDF文章时候,我们会发现有些PDF文章带有非常多的注释,显得非常不美观,影响了阅读体验.那么PDF文章里的批注应该怎么进行删除呢?怎样批量删除PDF文件中的注释? 操作教程: 1.首先我们点击安装在电脑上的PDF编辑器,运行程序,我在看见软件界面之后,我们点击软件界面的"打开"选项.添加并打开我们需要进行编辑的PDF文件. 2.PDF文件打开以后,在软件的工具栏里找到"注释"按钮,单击按钮,会弹出一个下拉框,然后选择"显示注释列表&qu

python合并pdf并添加书签

初步熟悉 安装 pip install pypdf2 合并并添加书签 #!/usr/bin/env python3.5 # -*- coding: utf-8 -*- # @Time : 2019/12/1 下午3:42 # @Author : yon # @Email : [email protected] # @File : tt.py import os , os.path from PyPDF2 import PdfFileReader, PdfFileWriter import tim

如何分割或合并pdf文件

我们的PDF格式文件很优秀,可以加密,防止复杂粘贴,很好的保护了我们的权限.PDF文件转换也有许许多多种,我们也基本上有所了解,要是希望将PDF文件合并在一起呢?就像是迅捷PDF转换器的图片合并功能,能不能也把PDF文件合并起来呢? 为了符合办公用户批量图片或者文档合并需求,迅捷软件推出了一款全面的PDF合并分割工具,它是是一款专门针对PDF文件批量合并的工具,可以很好的把PDF文件合并在一起,也是pdf分割软件.软件秉承一贯干净.简约的作风,操作简单,支持选择文件和文件夹;支持文件拖拽.当然用