# muPdfTools **Repository Path**: WangWeight/mu-pdf-tools ## Basic Information - **Project Name**: muPdfTools - **Description**: 使用Python编写的PDF工具集,面向pdf文件拆分,裁剪,打印重排等功能。在原有Pdf-tools的基础上进一步完成。功能彻底拆分,减少耦合度,为提供GUI操作提供基础库支持。 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2020-10-07 - **Last Updated**: 2022-01-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # mu-PDF-Tools #### 介绍 使用Python+MuPyPdf库编写的PDF文档处理工具集,实现处理pdf文件的裁剪,分割,输出打印版本等工作。 *注意* 在作为独立脚本运行时,参数中的页码值`1`是从书本第一页开始计算,以后依次累加,而是作为模块调用时,函数接受的页码是从`0`开始计算。 #### 软件架构 每个`mu*.py`文件提供对应功能的方法,其中一般提供两个函数,`mu*File`用于生成处理后的文件,`mu*Object`用于返回生成的文件对象,提供给其他方法进一步处理。例如,muMakePrintablePdf中就使用了包括`muSplitPdfObject`和`muCropPdfObject`两种处理方法,在内存中传递上一步的处理对象,不使用临时文件的处理方法。 每个文件,既可以作为独立的处理程序,也可以按照其中的函数定义,处理更复杂的流程,提供给`Python`脚本获取结果。 ##### 1、[muMakePrintablePdf.py](muMakePrintablePdf.py) 此脚本的最初目的为节约双面打印的纸张成本。在双面打印pdf文档时,会将输入pdf文档中相邻四页纸张按照一定的方式,合并成两页文档,以便输出打印,方便装订成书。 ```shell usage: muMakePrintablePdf.py [-h] [-r 0.N] [-sr a-b,c-d] [-ss a,b,c] [-o output_pdf] [-c cover_page] [-m left,top,right,bottom] [-x book1,book2...] input_pdf positional arguments: input_pdf 输入pdf文件名 optional arguments: -h, --help 显示帮助信息 -r 0.N 输出打印版文件后两个页面之间的宽度与页面高度的比例, 默认为0.1 -sr a-b,c-d 从原pdf中提取指定范围的页码生成不同的pdf,页码从1开始计算。 如一部100页的书籍,通过参数'-sr 16-40,50-70'会拆分出'16-40'和'50-70'页的两本书 -ss a,b,c 根据提供的拆分页码将源书籍拆分出N+1本书籍,并使用页码范围为名称 保存。如一部100页的书籍,通过参数'-s 16,40'会被拆分为(1-15),(16-39),(40-100)三本书 -o output_pdf 生成的书籍名称。如果没有提供,则会使用原书籍名追加'_result'保存, 若使用了提取或者拆分,则还会追加页码信息。 -c cover_page 提供页面页码信息,会自动向拆分书籍等首页添加此页面作为书籍首页。 会自动增加一个空白页作为起始页面,默认是不添加。 -m left,top,right,bottom 对书籍页面裁剪的范围缩放,输入为占用页面的比例值,顺序依次是左, 上,右,下,默认都是0.1 -x book1,book2..., --fix-cover book1,book2... 向某拆分书籍增加空白页,用于修复该书籍页码值与书籍翻页方向不一致。 book1从1依次指定,与ss参数中拆分书籍一致。会根据是否提供了'-c'参数判断插入页页面为2还是3 #例如 #python muMakePrintablePdf.py f:/aaa.pdf -> f:/aaa_result.pdf #python muMakePrintablePdf.py f:/aaa.pdf -ss 50,100 -> f:/aaa_1-49_result.pdf,f:/aaa_50-99_result.pdf #python muMakePrintablePdf.py f:/aaa.pdf -sr 10-40 -o f:/output.pdf -> f:/output_10-40_result.pdf ``` * 依赖 [PyMuPDF]() 代码运行效果如下图。