- 1.PyPDF2库
- 2.作者答疑
如今网上大部分电子文档数据都是PDF,如何对PDF进行有效的编辑,能够非常有效的提高工作效率,本文介绍采用开源库来自定义分割PDF,亲测可用:
# encoding:utf-8
from PyPDF2 import PdfFileReader, PdfFileWriter
def splitPdf():
readFile = 'C:/Users/ajz/Desktop/代琼/2.健力多汤臣倍健氨糖硫酸软骨素钙片48片_已签章.pdf';
outFile = 'C:/Users/ajz/Desktop/copy.pdf';
pdfFileWriter = PdfFileWriter();
# 获取 PdfFileReader 对象
pdfFileReader = PdfFileReader(readFile); # 或者这个方式:pdfFileReader = PdfFileReader(open(readFile, 'rb'));
# 文档总页数
numPages = pdfFileReader.getNumPages();
if numPages > 5:
# 从第五页之后的页面,输出到一个新的文件中,即分割文档
for index in range(5, numPages):
pageObj = pdfFileReader.getPage(index)
pdfFileWriter.addPage(pageObj)
# 添加完每页,再一起保存至文件中
pdfFileWriter.write(open(outFile, 'wb'))
import os
def split(pdf_file, delta, output_dir):
if not os.path.exists(output_dir):
os.makedirs(output_dir)
if not os.path.exists(pdf_file):
return
print('----------参数信息---------------')
print('File:' + pdf_file)
print('PageNums:' + str(delta))
print('Dest:' + output_dir)
print('-----------pdf开始切分-----------')
file_name = pdf_file.split('/')[-1].split('.')[0]
output_dir = os.path.join(output_dir, file_name)
if not os.path.exists(output_dir):
os.mkdir(output_dir)
input_stream = open(pdf_file, 'rb')
pdf_input = PdfFileReader(input_stream)
page_count = pdf_input.getNumPages()
sum_page_count = int(page_count / (delta * 1.0))
remind_page = page_count % delta
for i in range(0, sum_page_count + 1):
start = i * delta
end = (i + 1) * delta
pdf_out = PdfFileWriter()
file_path = os.path.join(output_dir, os.path.split(pdf_file)[1])
if i < sum_page_count:
full_file_name = file_name + str(start + 1) + '-' + str(end) + ".pdf"
file_path = os.path.join(output_dir, full_file_name)
print(full_file_name + '切分完成')
for j in range(start, end):
page = pdf_input.getPage(j)
pdf_out.addPage(page)
else:
full_file_name = file_name + str(start + 1) + '-' + str(start + remind_page) + ".pdf"
file_path = os.path.join(output_dir, full_file_name)
print(full_file_name + '切分完成')
for j in range(delta * (sum_page_count), page_count):
page = pdf_input.getPage(j)
pdf_out.addPage(page)
out_stream = open(file_path, 'wb')
pdf_out.write(out_stream)
out_stream.close()
input_stream.close()
print('-----------pdf切分完成-----------')
if __name__ == '__main__':
readFile = 'C:/Users/ajz/Desktop/广州知了软件有效公司.pdf';
split(readFile,2,'C:/Users/ajz/Desktop');
合理的脚本代码可以有效的提高工作效率,减少重复劳动。
2.作者答疑如有疑问,敬请留言。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)