专题3 编写你自己的PDF编辑器, 实现PDF页面提取, 页面合并与替换_pypdf2-pdf-extract-merge-replace

page = forms.IntegerField(label=“Replace page number”)

视图函数

#包

import os
import zipfile

import PyPDF2
from django.http import FileResponse
from django.shortcuts import render

from pdf.forms import PdfExtractForm, PdfMergeForm, PdfReplaceForm

def pdf_single_page_extract(request):
if request.method == ‘POST’:
form = PdfExtractForm(request.POST, request.FILES)
if form.is_valid():
f = form.cleaned_data[‘file’]

转化为pdf对象

pdfFileObj = PyPDF2.PdfFileReader(f)

获取需要提取的页面参数

page_num_info = form.cleaned_data[‘page’].strip()
print(page_num_info)
if len(page_num_info) == 2:
page_num_list = page_num_info.split(‘,’)[0]
print(‘page_num_list’, page_num_list)
else:
page_num_list = page_num_info.split(‘,’)
print(page_num_list)

创建压缩文件对象 生成提取文件压缩包

zf = zipfile.ZipFile(os.path.join(‘media’, ‘extracted_pages.zip’), ‘w’)

for page_num in page_num_list:

pdf文档页面对象编码是从0开始 所以减一

page_index = int(page_num) - 1

利用PyPDF2提取页面对象

pageObj = pdfFileObj.getPage(page_index)

利用PyPDF2创建新的PDF Writer

pdfWriter = PyPDF2.PdfFileWriter()
pdfWriter.addPage(pageObj)

pdf文件路径

pdf_file_path = os.path.join(‘media’, ‘extracted_page_{}.pdf’.format(page_num))

将提取页面写入新的PDF文件

with open(pdf_file_path, ‘wb’) as pdfOutputFile:
pdfWriter.write(pdfOutputFile)
zf.write(pdf_file_path)
zf.close()
response = FileResponse(open(os.path.join(‘media’, ‘extracted_pages.zip’), ‘rb’))
response[‘content_type’] = “application/zip”
response[‘Content-Disposition’] = ‘attachment; filename=“extracted_pages.zip”’
return response
else:
form = PdfExtractForm()
return render(request, ‘pdf/pdf_extract.html’, {‘form’: form})

def pdf_range_extract(request):
if request.method == ‘POST’:

如果用户通过POST提交

form = PdfExtractForm(request.POST, request.FILES)
if form.is_valid():

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值