每日一问—03如何拆分指定页码pdf

一、各页码范围合成一个整体的pdf  

import PyPDF2 #导入PyPDF2模块

def merge_pdf_pages(input_pdf, page_ranges, output_pdf):
    reader = PyPDF2.PdfFileReader(input_pdf) #读取PDF文件
    writer = PyPDF2.PdfFileWriter() #创建PDF文件写入对象

    for page_range in page_ranges: #遍历每个页码范围
        start, end = page_range #获取页码范围的起始页码和结束页码
        for page in range(start, end+1): #遍历页码范围内的每一页
            writer.addPage(reader.getPage(page-1)) #将每一页添加到PDF文件写入对象中

    with open(output_pdf, 'wb') as output: #打开输出PDF文件
        writer.write(output) #将PDF文件写入对象中的内容写入输出PDF文件

input_pdf = "D:\\TJU\\3.pdf" #输入PDF文件路径
page_ranges = [(1, 3), (5, 7)] #页码范围
output_pdf = 'D:\\TJU\\output.pdf' #输出PDF文件路径
merge_pdf_pages(input_pdf, page_ranges, output_pdf) #合并PDF文件
print('PDF files merged successfully!') #输出合并成功信息
#include <iostream> //导入iostream库
#include <podofo/podofo.h> //导入podofo库
 
void merge_pdf_pages(const char* input_pdf, const std::vector<std::pair<int, int>>& page_ranges, const char* output_pdf) { //定义函数merge_pdf_pages
    PoDoFo::PdfVecObjects objects; //创建PdfVecObjects对象
    PoDoFo::PdfWriter writer; //创建PdfWriter对象
    PoDoFo::PdfDocument document(input_pdf); //创建PdfDocument对象
 
    PoDoFo::PdfDocument output_doc(&objects); //创建PdfDocument对象
    output_doc.GetInfo()->SetCreator(document.GetInfo()->GetCreator()); //设置输出PDF文件的创建者
    output_doc.GetInfo()->SetAuthor(document.GetInfo()->GetAuthor()); //设置输出PDF文件的作者
 
    for (const auto& page_range : page_ranges) { //遍历每个页码范围
        for (int page = page_range.first; page <= page_range.second; ++page) { //遍历页码范围内的每一页
            PoDoFo::PdfPage* source_page = document.GetPage(page - 1); //获取源PDF文件中的每一页
            PoDoFo::PdfPage* new_page = output_doc.CreatePage(source_page->GetPageSize()); //创建新的PDF文件页
            writer.AppendPage(new_page, source_page); //将源PDF文件中的每一页添加到新的PDF文件页中
        }
    }
 
    writer.Write(output_pdf, &output_doc); //将新的PDF文件写入输出PDF文件中
}
 
int main() { //主函数
    const char* input_pdf = "input.pdf"; //输入PDF文件路径
    std::vector<std::pair<int, int>> page_ranges = {{1, 3}, {5, 7}}; //页码范围
    const char* output_pdf = "output.pdf"; //输出PDF文件路径
    merge_pdf_pages(input_pdf, page_ranges, output_pdf); //合并PDF文件
    return 0; //返回0
}

二、每个页码范围单独成pdf 

import PyPDF2 #导入PyPDF2模块

def merge_pdf_pages(input_pdf, page_ranges, output_pdf):
    reader = PyPDF2.PdfFileReader(input_pdf) #读取PDF文件
    writer = PyPDF2.PdfFileWriter() #创建PDF文件写入对象

    for page_range in page_ranges: #遍历每个页码范围
        start, end = page_range #获取页码范围的起始页码和结束页码
        for page in range(start, end+1): #遍历页码范围内的每一页
            writer.addPage(reader.getPage(page-1)) #将每一页添加到PDF文件写入对象中

    with open(output_pdf, 'wb') as output: #打开输出PDF文件
        writer.write(output) #将PDF文件写入对象中的内容写入输出PDF文件

input_pdf = "D:\\TJU\\3.pdf" #输入PDF文件路径
page_ranges = [(1, 3), (5, 7)] #页码范围
output_pdf = 'D:\\TJU\\output.pdf' #输出PDF文件路径
merge_pdf_pages(input_pdf, page_ranges, output_pdf) #合并PDF文件
print('PDF files merged successfully!') #输出合并成功信息

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南叔先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值