像专业人士一样把PDF切碎。

deba-bocho的Python项目详细描述


像专业人士一样分割PDF:

% bocho my-fancy-file.pdf --pages 1 3 5 6 10 --angle 30 --zoom 1.6
my-fancy-file-bocho-630x290.png

获取一个pdf文件并从所选页面创建“堆叠页面”预览。

它接受一系列定制输出的选项(传递-h标志以获取详细信息)。

安装

需要ImageMagick,因此您可能需要,例如:

% sudo apt-get install imagemagick

如果要使用Wand而不是直接调用convert,还需要执行一些附加步骤,例如:

% sudo apt-get install libmagickwand-dev
% pip install wand

有关详细信息,请参阅安装说明。

在OS X上,您需要使用自制程序来获得低级依赖项:

% brew install ghostscript imagemagick

一旦这些都整理好了,你只需要pip install deba-bocho

皮比:哦,天哪!

对于简单的操作,cpython和pypy在性能上没有太大差别。 如果你想使用shadow效果,那就另当别论了。 在我的笔记本电脑上运行不科学的基准测试…

Python2.7:

% time bocho /tmp/report.pdf --preset example --shadow
...
bocho /tmp/report.pdf --preset example --shadow  35.89s user 0.15s system 99% cpu 36.132 total

皮比:

% time bocho /tmp/report.pdf --preset example --shadow
...
bocho /tmp/report.pdf --preset example --shadow  4.10s user 0.18s system 99% cpu 4.297 total

使pypy的速度大约是python 2.7的10倍。 没有--shadow的同一进程在两个实现中大约需要2.5秒。

用法

有关用法的信息,请运行bocho --help。如果您想将其用作模块:

>>> import bocho
>>> help(bocho.assemble)

配置

如果您将多次使用相同的选项,那么可能值得在config.ini文件中创建一个预设(请参见config.example.ini或下面的示例开始)。

默认情况下,bocho将检查$HOME/.config/bocho/config.ini,因此最好将配置保存在那里,但是可以将--config选项和路径传递到另一个位置。

[example]pages=1,3,5,7,9width=630height=290border=4reuse=truedelete=trueverbose=trueuse_convert=trueparallel=5

您可以通过呼叫:

bocho /path/to/file.pdf --preset example [--config /path/to/config.ini]

待办事项

  • 正确转动机具`
  • 允许使用“缩放”选项`
  • 可选的阴影`
  • 使阴影在方向上更智能(它们当前是统一的,不考虑角度/变换)
  • 使基本边缘分隔符成为可选的`
  • 自动间距作为选项以及固定像素间距
  • 水平和垂直间距`
  • 水平和垂直偏移`
  • 可选的从右到左堆叠`
  • 处理非A4宽高比输入文档
  • 可选应用变换:
    • 仿射(为了垂直/水平剪切效应而放弃)
    • shear(通过创建简化仿射变换应用)
    • 拉伸(可以以与剪切类似的方式实现)
    • 透视图
  • 指定自定义宽度/高度时,请确保切片PNG足够大
  • 固定X和Y间距计算以考虑任何应用的旋转和变换
  • 允许可配置转换(可能使用在.ini文件中定义的预设)
  • 删除pypdf依赖项`
  • 使用imagemagick绑定,而不是使用subprocess来调用convert(wand)
  • 在两次运行之间有选择地重复使用页面`
  • 允许用户为PDF到PNG的转换指定分辨率∮
  • 文件`
  • 显示各种选项效果的精美图片
  • 使用正确的日志记录

许可证

LICENSE.txt。 测试图像来自USC-SIPI图像数据库(http://sipi.usc.edu/database/)。 测试pdf是“分布式时空干扰对齐”(arXiv:1405.0032)。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
请求响应模式的java JMS   java如何从SeleniumWebDriver中的“Span Type下拉列表”中选择值   java JPA相当于Hibernate的@Generated(GenerationTime.ALWAYS)   java ActiveMQ查询:如何启动   java如何在jsp文件中使用freemarker标记库?   java如何在TabsLayout中用另一个片段替换一个片段的内容?   国际化如何理解Java教程国际化定制资源包加载示例?   XML配置中的java spring log4j无法为日志信息创建文件   oracle11g JDK 6:有没有办法运行一个新的java进程来执行指定类的主方法   java在avro模式中使用“default”   缺陷跟踪我在哪里可以提交关于FOSS Java Sound实施组织的缺陷报告。类路径。冰岛。pulseaudio。Pulseaudiosourcedaline?   编码Java系统。在和系统中。Sun/Oracle和IBM JVM解决方案在读写标准字节数组方面存在差异   java如何将列表项作为查询参数添加到字符串url中?   将自定义库导出到可导入jar文件java