码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-01-05 23:30:59      阅读:1367      评论:0      收藏:0      [点我收藏+]

标签:list   emerge   ext   fileread   nbsp   ret   帮助   script   路径   

网上找了几个合并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)

 

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

标签:list   emerge   ext   fileread   nbsp   ret   帮助   script   路径   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!