首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图将一个大型.pdf拆分为多个文件。(python,pdftk)

试图将一个大型.pdf拆分为多个文件。(python,pdftk)
EN

Stack Overflow用户
提问于 2012-08-31 19:43:56
回答 2查看 2.4K关注 0票数 1

我用Python编写了一个脚本,它将一个.pdf按章节/书签拆分。这里本质上是我的程序的关键:

代码语言:javascript
复制
for each chapter:
    system('pdftk A=file.pdf cat A{start}-{end} output file2.pdf')

这个工具包很好用,但是一次又一次地调用它显然不是一项节省时间的任务。解析一个200 20的.pdf文件需要花费15到20秒的时间,并且在大约30章的时间内这样做需要花费很长的时间。打开文件比实际写入任何数据花费的时间更多。

由于在工具箱中似乎没有一种固有的方法来字符串多个命令,所以我是否可以在Python或CMD中使用任何内存欺骗来让我绕过这个问题(即保持.pdf打开)?如果您能推荐一个模块的话,我也将查看另一个模块(不过,pyPdf也有自己的一系列问题)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-01 21:04:08

要将pdf文件保存在内存中,请将其读入StringIO缓冲区,并告诉pdftk从stdin读取。具体而言:使用subprocess.call而不是os.system,以StringIO缓冲区作为stdin参数:

代码语言:javascript
复制
mybuffer = StringIO.StringIO(open('file.pdf').read())
subprocess.call('pdftk ...', stdin=mybuffer)

它仍然需要每次重新解析pdf文件,但至少你不会比你更多地旋转你的硬盘驱动器。唯一真正快速的方法是使用一个工具,它可以一次完成(例如,解决您使用pypdf时遇到的任何问题)。

票数 2
EN

Stack Overflow用户

发布于 2013-10-07 22:03:17

例如,如果您有一个有20000页的input.pdf文件,并且希望将其拆分为1.20.pdf文件,每个文件有1000页。

代码语言:javascript
复制
for (( i=0; i<=20; i++ )); do let n=$i*1000; let m=$[i+1]*1000; pdftk input.pdf cat $n-$m output $i.pdf; done;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12221619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档