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

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(

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值