跳转到主要内容

从命令行操作PDF文档

项目描述

订书机是PDFtk的纯Python替代品,PDFtk是一个用于从命令行操作PDF文档的工具。

历史

PDFtk是用Java和C++编写的,并使用gcj原生编译。遗憾的是,它在几年前已经停止开发,并且已经开始生锈(例如,它不能在许多平台上轻松编译)。

Philip Stark决定寻找替代品,并找到了pypdf,一个用纯Python编写的PDF库。他找不到实际使用该库的工具,因此他开始编写自己的工具。

订书机的0.3版本完全由Fred Wenzel重构。他还添加了测试和强大的功能。

像pdftk一样,订书机是一个命令行工具。如果您想添加GUI,编译成您最喜欢的平台的二进制文件,或贡献其他任何内容,请随意分叉并发送拉取请求。

贡献者和作者

订书机版本0.2由Philip Stark于2009年编写。订书机版本0.3由Fred Wenzel于2010年编写。

要查看贡献者列表,请检查CONTRIBUTORS文件。

变更日志(有点)

  • 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有以下几种模式

选择/删除(分别用seldel调用)

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 (40.1 kB 查看散列)

上传时间

构建分发

stapler-1.0.0-py3-none-any.whl (38.3 kB 查看散列)

上传时间 Python 3

支持者