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

2023-11-12

一、各页码范围合成一个整体的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!') #输出合并成功信息

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

每日一问—03如何拆分指定页码pdf 的相关文章

  • Linux:命令行实用程序将 RTF 转换为 PDF?

    有什么建议可以将 RTF 转换为 PDF 吗 我需要从 LAMP 应用程序执行此操作 因此像 GhostScript 这样的命令行实用程序将是理想的选择 或者 您可以使用 libreoffice 来完成此任务 libreoffice hea
  • 如何使用回形针对多页 pdf 进行缩略图

    我想让 Paperclip 为上传的多页 PDF 文件的每一页创建 2 个缩略图 我正在运行 Paperclip 2 3 1 1 并在我的资产模型中使用它 has attached file asset styles gt medium g
  • 使用 ImageMagick 和/或 GhostScript 将多页 PDF 转换为多个 JPG

    我正在尝试将多页 PDF 文件转换为一堆 JPEG PDF 中的每一页一个 我花了几个小时寻找如何做到这一点 最终我发现我需要安装 Ghostscript 所以我就这么做了 来自这个网站 http downloads ghostscript
  • 使用 Quartz 创建 PDF 注释 (iOS)

    有人设法使用 Quartz 在现有 PDF 中编写自定义注释吗 我已经使用 CGPDFDocumentRef 等渲染了 PDF 现在工作正常 我成功地阅读了 Annots 字典 if CGPDFDictionaryGetArray page
  • 使用 PHP 创建图表并导出为 PDF

    我正在寻找有关使用 PHP 创建图表的建议 我还希望能够将这些图表导出到 PDF 文档 我目前正在使用谷歌图表 但我不喜欢将我的所有信息发送到谷歌的想法 我更喜欢自己的托管解决方案 我见过很多 Flash 解决方案 但我不知道有什么方法可以
  • 使用 JavaScript 生成 PDF 文件

    我正在尝试将 XML 数据从网页转换为 PDF 文件 并且希望能够完全在 JavaScript 中完成此操作 我需要能够绘制文本 图像和简单的形状 我希望能够完全在浏览器中完成此操作 我刚刚写了一个名为jsPDF https github
  • 使用 PDFbox 从区域中提取文本

    是否可以从一个区域中提取文本PDFbox http pdfbox apache org index html仅使用二进制文件而不必创建自己的代码 编译这个简单的程序并将其打包到 jar 中 import java awt geom Rect
  • 无法使用文件提供程序从内部存储打开 PDF 以便在 Android 8 和 9 上查看

    仅适用于 Android 8 和 9 我这里有一个 PDF 文件管理器 String url file storage emulated 0 Android data com verna poc files Download mypdf p
  • 无法在jspdf中加载多个图像

    我正在尝试加载动态生成的多个图像 我想将这些图像转换为 PDF 格式 HTML 代码如下
  • 如何在无头模式下使用 Libre Office Draw 从命令行创建 PDF/A?

    LibreOffice Draw 允许您打开非 PDF A 文件并将其导出为 PDF A 1b 或 PDF A 2b 文件 通过在 macOS 上调用命令行也可以实现相同的效果 Applications LibreOffice app Co
  • 在 RMarkdown 输出到 PDF 时缩进而不添加项目符号点或编号

    之前有人问过如何在没有项目符号的情况下缩进文本 RMarkdown 中的点 但这是针对 HTML 输出的 在 RMarkdown 中缩进而不添加项目符号点或数字 https stackoverflow com questions 47087
  • 是否有一种直接的方法可以使用 iTextSharp 将一个 PDF 文档附加到另一个 PDF 文档?

    我在网上搜索了有关如何执行此操作的示例 我发现有些人似乎比他们需要的更多地参与其中 所以我的问题是 使用 iTextSharp 是否有一种相当简洁的方法将一个 PDF 文档附加到另一个 PDF 文档 最好这不会涉及第三个文件 只需打开第一个
  • Swift UIImage 转换为 PDF

    在我的应用程序中 必须从 iPad Gallery 出售 UIImage 并将其转换为 PDF 并保存在服务器端 我可以选择图像并将其发送到服务器端 但后端说 pdf 为空 空数据 我还在控制台中看到警告 错误 发现扩展时遇到 发现 错误
  • PyFPDF在指定大小时无法添加页面

    在 pyfpdf 文档上据说可以在添加页面时指定格式 fpdf add page orientation format same False 但在指定格式时它给了我一个错误 error pdf add page format 1000 10
  • 从 php/linux 获取 pdf 的布局模式(横向或纵向)

    给定一个 PDF 如何使用 PHP lib 或 Linux 命令行工具获取 PDF 的布局模式 或相对宽度 高度 Using http www tecnick com public code cp dpage php aiocp dp tc
  • FileReader 读取 PDF 时丢失数据

    我的限制是只能以 JSON 格式将数据发送到服务器 并且我需要将 PDF 文件与 JSON 中的其他表单数据一起发送 我虽然可以用 base64 从中创建一个字符串 如下所示这个解决方案 https stackoverflow com a
  • RowSpan 在 iTextSharp 中不起作用?

    我正在尝试将 Html 转换为 PDF 我正在使用 iTextSharp 我发现iTextSharp对CSS的支持不太好 事实上我认为 HtmlWorker 线程并不支持这一切 让我的问题更加复杂的是 iTextSharp 似乎也不支持 R
  • TCPDF 为一个文档中的不同页面设置不同的页眉

    有没有办法使文档中第一页的页眉徽标和第二页的页眉徽标不同 我认为在添加页面之间更改标题数据可能会解决问题 但在我的测试中 添加第一页后设置标题似乎没有效果 other stuff pdf gt setHeaderFont array PDF
  • 报告实验室性能低下

    我在用着报告实验室将一些大型图书馆 俄语纯文本 转换为 pdf 格式 当原始文件足够小 例如 大约 10 50 kB 时 它可以正常工作 但是 如果我尝试转换大文本 超过 500kB 则需要花费大量时间来进行报告实验室 有谁知道可能是什么问
  • 裁剪 .pdf 文件的页面

    我想知道是否有人有以编程方式处理 pdf 文件的经验 我有一个 pdf 文件 我需要将每一页裁剪到一定大小 经过快速谷歌搜索后 我找到了 python 的 pyPdf 库 但我的实验失败了 当我更改页面对象上的cropBox 和trimBo

随机推荐

  • 7-3 谁是赢家

    7 3 谁是赢家 某电视台的娱乐节目有个表演评审环节 每次安排两位艺人表演 他们的胜负由观众投票和 3 名评委投票两部分共同决定 规则为 如果一位艺人的观众票数高 且得到至少 1 名评委的认可 该艺人就胜出 或艺人的观众票数低 但得到全部评
  • vue 图片,视频点击预览按钮方法

    图片 使用el image viewer组件 写之前注意引入安装组件 主要代码 div class div
  • opencv之初学第3天

    opencv学习第三天 今天学习一下灰度变换 我对图像不是太了解 我还特地学了一下灰度变换与像素的区别 像素 灰度 RGB 分辨率 y xxiii的博客 CSDN博客 像素值和rgb的关系 先来梳理一下不太懂的知识点 1 关于cvtColo
  • Windows下安装zerotier,网络状态提示PORT_ERROR错误解决

    ZeroTier是一款基于P2P的内网穿透工具 支持多客户端 手机电脑可以互通互联 最近为方便nas操作 在电脑上部署安装 结果踩坑 在Windows下使用zerotier时提示PORT ERROR错误 最初以为是端口被屏蔽 关闭防火墙 发
  • 【转】DevOps的前世今生

    目前在国外 互联网巨头如Google Facebook Amazon LinkedIn Netflix Airbnb 传统软件公司如Adobe IBM Microsoft SAP等 亦或是网络业务非核心企业如苹果 沃尔玛 索尼影视娱乐 星巴
  • [bx]和loop指令

    1 bx 的含义 bx 表示一个内存单元 它的偏移地址在bx中 比如 mov ax bx 会将一个内存单元的内容送入ax 这个内存单元的长度是2个字节 存放一个字 偏移地址存放在bx中 段地址在ds中 mov al bx 则是移动半个字 2
  • openGL API glDeleteSamplers中文翻译

    openGL API glDeleteSamplers中文翻译 先放上英文 后面是中文翻译 Name glDeleteSamplers delete named sampler objects C Specification void gl
  • windows server 2003 永恒之蓝(MS17-010)漏洞复现

    目录 永恒之蓝 概述 防护方式 复现 复现工具 复现过程 侦测部分 用于侦测靶机是否具有ms17 010漏洞 攻击部分 永恒之蓝 概述 永恒之蓝是指2017年4月14日晚 黑客团体Shadow Brokers 影子经纪人 公布一大批网络攻击
  • ImportError: cannot import name 'json_util' from 'bson'

    最近使用bson的json util时出现错误 错误提示如下 ImportError cannot import name json util from bson OR ImportError No module named bson js
  • 面试总结(JavaWeb后端工程师三年面试问题,附答案!)

    笔者在今年上半年辞职了 陆陆续续面试了一些互联网公司 一起来看看这些公司都问的些什么面试题吧 一 Spring MVC和Spring boot有啥区别 1 Spring MVC和Spring Boot都是Spring的一部分 且两者都是由I
  • 刷脸支付条赛道上支付宝遥遥领先

    社会经济在快速发展 而身边所携带的现金却在慢慢减少 很多人甚至出门都不带现金 尤其是早晨着急上班的时候 在地铁口附近买包子需要付款时 手中无现金 拿出手机又嫌麻烦 刷脸似乎更为便捷 于是乎 脸就变得越来越值钱 靠脸吃饭不再仅仅局限于偶像明星
  • 【jar包】java -jar 启动服务,断开服务器连接或者关闭窗口后,服务停止

    解决办法 nohup java jar XXX jar gt log file 最后的 在后台运行 只能避免打断后程序停止 无法避免关闭当前窗口 最前面的nohup 不挂断运行命令 当账户退出或终端关闭时 程序仍然运行 输出到log fil
  • 服装行业多模态算法个性化产品定制方案

    一 项目背景 AI赋能服装设计师 设计好看 好穿 好卖的服装 传统服装行业痛点 设计师无法准确捕捉市场趋势 抓住中国潮流 上新周期长 高库存滞销风险大 基本款居多 难以满足消费者个性化需求 解决方案 GPT 数据洞察 快速反应市场时尚流行趋
  • pycharm安装2021最新详细教程小白入门

    一 官网下载安装包 Pycharm的官网 https www python org 这个链接进去直接是下载界面 https www jetbrains com pycharm download 1 专业版 Professional 是收费的
  • C++基本语法

    C 中构造函数的调用 class Type void main Type obj ok 编译器调用了默认的构造函数 Type obj1 Type ok 显示调用了默认的构造函数 Type obj3 error 其是声明了一个无参并返回Typ
  • 控制台get的两种提交方式

    本次学习需要打开Visual Studio 2015简称 VS 开发工具 其他的版本也可以使用 打开进入页面创建项目 创建的项目命名为控制台get提交的两种方式 之后我们在软件默认的位置 保存的位置可以进行更改 之后就到更改的位置中查找 中
  • axios 请求自动携带 cookie

    axios 请求自动携带 cookie axios默认是不让ajax请求头部携带cookie的 添加withCredentials设置 const instance axios create baseURL http 127 0 0 1 3
  • Java 实现暴力匹配算法(也称为朴素字符串匹配算法)

    摘要 暴力匹配算法 也称为朴素字符串匹配算法 是一种简单但有效的字符串匹配算法 它通过遍历主串和模式串的每一个字符 并在遇到不匹配的情况下逐个后移字符进行匹配 本文将使用Java语言实现暴力匹配算法 并对其性能进行简要分析 介绍 字符串匹配
  • C 简介

    原文链接 https www runoob com cprogramming c intro html C 语言是一种通用的高级语言 最初是由丹尼斯 里奇在贝尔实验室为开发 UNIX 操作系统而设计的 C 语言最开始是于 1972 年在 D
  • 每日一问—03如何拆分指定页码pdf

    一 各页码范围合成一个整体的pdf import PyPDF2 导入PyPDF2模块 def merge pdf pages input pdf page ranges output pdf reader PyPDF2 PdfFileRea