• 本脚本用来合并pdf文件,输出的pdf文件按输入的pdf文件名生成书签

  • 使用示例如下:

    python pdfmerge.py -p "D:\pdf-files" -o "merged-out.pdf" -b True'
    • 1
  • 示例说明:
    要合并的pdf文件所在的路径: D:\pdf-files
    合并后的pdf文件的输出文件名:merged-out.pdf
    是否从pdf文件中导入书签的值:True

  • 所用模块:PyPDF2argparse及其他

  • 测试环境:3.7.1

  • 实现代码:

import os, sys, codecs
from argparse import ArgumentParser, RawTextHelpFormatter
from PyPDF2 import PdfFileReader, PdfFileWriter, PdfFileMerger def getfilenames(filepath='',filelist_out=[],file_ext='all'):
# 遍历filepath下的所有文件,包括子目录下的文件
for fpath, dirs, fs in os.walk(filepath):
for f in fs:
fi_d = os.path.join(fpath, f)
if file_ext == 'all':
filelist_out.append(fi_d)
elif os.path.splitext(fi_d)[1] == file_ext:
filelist_out.append(fi_d)
else:
pass
return filelist_out def mergefiles(path, output_filename, import_bookmarks=False):
# 遍历目录下的所有pdf将其合并输出到一个pdf文件中,输出的pdf文件默认带书签,书签名为之前的文件名
# 默认情况下原始文件的书签不会导入,使用import_bookmarks=True可以将原文件所带的书签也导入到输出的pdf文件中
merger = PdfFileMerger()
filelist = getfilenames(filepath=path, file_ext='.pdf')
if len(filelist) == 0:
print("当前目录及子目录下不存在pdf文件")
sys.exit()
for filename in filelist:
f = codecs.open(filename, 'rb')
file_rd = PdfFileReader(f)
short_filename = os.path.basename(os.path.splitext(filename)[0])
if file_rd.isEncrypted == True:
print('不支持的加密文件:%s'%(filename))
continue
merger.append(file_rd, bookmark=short_filename, import_bookmarks=import_bookmarks)
print('合并文件:%s'%(filename))
f.close()
out_filename=os.path.join(os.path.abspath(path), output_filename)
merger.write(out_filename)
print('合并后的输出文件:%s'%(out_filename))
merger.close() if __name__ == "__main__":
description="\n本脚本用来合并pdf文件,输出的pdf文件按输入的pdf文件名生成书签\n使用示例如下:"
description=description+'\npython pdfmerge.py -p "D:\pdf-files" -o "merged-out.pdf" -b True'
description=description+'\n\n'+"示例说明:"
description=description+'\n'+"要合并的pdf文件所在的路径: D:\pdf-files"
description=description+'\n'+"合并后的pdf文件的输出文件名:merged-out.pdf"
description=description+'\n'+"是否从pdf文件中导入书签的值:True" # 添加程序帮助,程序帮助支持换行符号
parser = ArgumentParser(description=description, formatter_class=RawTextHelpFormatter) # 添加命令行选项 parser.add_argument("-p", "--path",
dest="path",
default=".",
help="PDF文件所在目录")
parser.add_argument("-o", "--output",
dest="output_filename",
default="merged.pdf
 
 

最新文章

  1. Servlet、JSP选择题
  2. jquery概要--基础02
  3. android学习笔记43——图形图像处理3——Path
  4. curl get started
  5. [DevExpress][TreeList]条件隐藏节点CheckBox
  6. 问题:关于坛友的一个定时重复显示和隐藏div的实现
  7. 实战RPM包制作
  8. 自制单片机之八……USB-ISP下载线
  9. virtIO驱动安装
  10. Java经典编程题50道之一
  11. Java基础语法实例(2)——实习第二天
  12. php中json对象数据的输出转化
  13. BotVS开发基础—Python API
  14. Java_数据交换_fastJSON_01_用法入门
  15. 学号:201621123032 《Java程序设计》第1周学习总结
  16. 第二周博客作业<西北师范大学|李晓婷>
  17. AndroidStudio意外崩溃,电脑重启,导致重启打开Androidstudio后所有的import都出错
  18. yii2 使用多个数据库的案例
  19. how to use boost program options
  20. vmstat和iostat命令进行Linux性能监控

热门文章

  1. Ceph集群部署(基于Luminous版)
  2. 使用Cloudera Manager搭建HDFS完全分布式集群
  3. HTML&CSS基础-边框简写属性
  4. 如果不用 ReSharper,那么 Visual Studio 2019 能还原 ReSharper 多少功能呢?
  5. java容器二:List接口实现类源码分析
  6. 如何在linux环境下配置环境变量
  7. gradle 构建scala程序
  8. 《少年先疯队》第九次团队作业:Beta冲刺第一天
  9. myeclipse常用快捷键和小技巧
  10. python与各数据库的交互