每日一问—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!') #输出合并成功信息

猜你喜欢

转载自blog.csdn.net/seek97/article/details/129833458
今日推荐