从命令行操作PDF文档
项目描述
订书机是PDFtk的纯Python替代品,PDFtk是一个用于从命令行操作PDF文档的工具。
历史
PDFtk是用Java和C++编写的,并使用gcj原生编译。遗憾的是,它在几年前已经停止开发,并且已经开始生锈(例如,它不能在许多平台上轻松编译)。
Philip Stark决定寻找替代品,并找到了pypdf,一个用纯Python编写的PDF库。他找不到实际使用该库的工具,因此他开始编写自己的工具。
订书机的0.3版本完全由Fred Wenzel重构。他还添加了测试和强大的功能。
像pdftk一样,订书机是一个命令行工具。如果您想添加GUI,编译成您最喜欢的平台的二进制文件,或贡献其他任何内容,请随意分叉并发送拉取请求。
变更日志(有点)
1.0.0 将代码迁移到Python 3。用更现代的ArgumentParser替换OptionParser。清理仓库。
0.3.3 在必要时支持旧版pyPdf,并修复了一些PyPI问题,如缺失的License Trove分类器和一些依赖项。
0.3.0 由Fred Wenzel重构,并现在使用PyPDF2
0.2.0 使用原始pyPdf实现功能完整性
许可证
Stapler遵循BSD许可协议。使用的BSD风格许可协议副本可在文件LICENSE中找到。
用法
Stapler有以下几种模式
选择/删除(分别用sel和del调用)
sel也可作为cat使用,以兼容我的个人肌肉记忆。 :)
使用选择,您可以从PDF中挑选页面并将它们连接到一个新的PDF文件中。
输入文件可以与句柄关联,以便以后使用范围。句柄是一个单个的大写字母
<input handle>=<input>
语法
stapler sel input1 page_or_range [page_or_range ...] [input2 p_o_r ...]
示例
# concatenate a and b into output.pdf stapler sel a.pdf b.pdf output.pdf # generate a pdf file called output.pdf with the following pages: # 1, 4-8 in 180° (D for down), 20-40 from a.pdf, 1-5 from b.pdf in # this order stapler sel a.pdf 1 4-8D 20-40 b.pdf 1-5 output.pdf # the same example with a handle for b.pdf stapler sel B=b.pdf a.pdf 1 4-8D 20-40 B1-5 output.pdf # generate a pdf file called output.pdf with the following pages: # 1 from a.pdf, 1-5 from b.pdf, 4-8 in 180° (D for down), 20-40 from a.pdf # this order stapler sel A=a.pdf B=b.pdf A1 B1-5 A4-8D A20-40 output.pdf # reverse some of the pages in a.pdf by specifying a negative range stapler sel a.pdf 1-3 9-6 10 output.pdf
删除命令的工作方式几乎与选择完全相同,但相反。它使用您未指定的页面和范围。
分割/爆发
将指定的PDF文件分割成单独的页面,并将每个页面写入自己的PDF文件中,命名方案如下
${origname}_${zero-padded page no}.pdf
语法
stapler split input1 [input2 input3 ...]
对于包含20页的文件foobar.pdf的示例
$ stapler split foobar.pdf $ ls foobar_01.pdf foobar_02.pdf ... foobar_19.pdf foobar_20.pdf
可以指定多个文件,它们将像调用单个stapler实例一样处理。
zip
使用zip,您可以从PDF中挑选页面(就像选择一样)。每个PDF的页面以交错方式合并在一起。这可以用来整理包含奇数页和偶数页的PDF到一个文件中。
语法:stapler zip 输入1 [范围[旋转]] [范围 …] [输入2 [范围…] …] 输出
示例
# combine a pdf with odd pages and a pdf with even pages into output.pdf stapler zip odd.pdf even.pdf output.pdf # combine a.pdf b.pdf and c.pdf, but use only some pages of c.pdf and # rotate b.pdf right (90° clockwise) and rotate c.pdf left (90° counter- # clockwise) stapler zip a.pdf b.pdf 1-endR c.pdf 1-3L output.pdf
如果某个范围比其他范围短,stapler将继续合并剩余的页面。
info
显示存储在PDF文件中的元数据信息。
语法
stapler info foo.pdf
示例输出
\*\*\* Metadata for foo.pdf /ModDate: D:20100313082451+01'00' /CreationDate: D:20100313082451+01'00' /Producer: GPL Ghostscript 8.70 /Title: foo.pdf /Creator: PDFCreator Version 0.9.9 /Keywords: /Author: John Doe /Subject:
list-logical
显示每个逻辑页面编号及其关联的物理页面编号。
语法
stapler list-logical foo.pdf
示例输出
A-1 1 C-1 2 D-1 3 D-2 4 D-3 5 D-4 6
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。
源分发
构建分发
stapler-1.0.0.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | a7b5e76dbbaf883811039aaf8afb52122afe178c1ff2a734eb8da5e3465d542c |
|
MD5 | 7a03af57ac943d37b96aeec0b13244be |
|
BLAKE2b-256 | 3a34d532dcd3010740efe76621a3207c4056cb9fd85813a5f04e3a7ebe4e43fc |