path(‘extract/single/’, views.pdf_single_page_extract, name=‘pdf_single_page_extract’),
提取范围内页面
path(‘extract/range/’, views.pdf_range_extract, name=‘pdf_range_extract’),
pdf合并
path(‘merge/’, views.pdf_merge, name=‘pdf_merge’),
页面替换
path(‘replace/’, views.pdf_replace, name=‘pdf_replace’),
]
Form表单信息
#pdf/forms.py
from django import forms
class PdfExtractForm(forms.Form):
file = forms.FileField(label=“Upload PDF Document”)
page = forms.CharField(max_length=20, label=“Page Number”)
def clean_file(self):
file = self.cleaned_data.get(‘file’)
if not file.name.lower().endswith(‘.pdf’):
raise forms.ValidationError("Only pdf documents are allowed. ")
return file
class PdfMergeForm(forms.Form):
file1 = forms.FileField(label=“PDF file 1”)
file2 = forms.FileField(label=“PDF file 2”, required=False)
file3 = forms.FileField(label=“PDF file 3”, required=False)
file4 = forms.FileField(label=“PDF file 4”, required=False)
file5 = forms.FileField(label=“PDF file 5”, required=False)
class PdfReplaceForm(forms.Form):
file1 = forms.FileField(label=“Replacement page”)
file2 = forms.FileField(label=“PDF document to be replaced”)
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(