首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PDFTK将PDF拆分成多个页面?

使用PDFTK将PDF拆分成多个页面?
EN

Stack Overflow用户
提问于 2017-05-05 13:04:15
回答 6查看 11.5K关注 0票数 10

我发现这个问题很难表达,也找不到我想要做的事情的在线解决方案。

我知道如何使用以下脚本使用PDFTK将大型PDF拆分为单个页面:

代码语言:javascript
复制
pdftk your_file.pdf burst output your_directory/page_%02d.pdf

但是现在我想将PDF除以另一页,这样每个新PDF都有两个(2)页(例如,第1+2页,第3+4页,5+ 6页等等)。

我知道Acrobat就像冠军一样,但是我需要一些我可以从Powershell执行的东西。

我对替代方案/解决办法持开放态度,比如在一页书破裂后,把它们合并成两页。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2017-05-06 17:33:24

这个PowerShell脚本将

  1. 使用pdftk获取页数。
  2. 在步骤中循环生成范围字符串。
  3. 使用该范围可将页面解压到新的pdf中,并将其附加到基本名称(并存储在同一文件夹中)。

更改前两个vars以适应您的环境。

代码语言:javascript
复制
## Q:\Test\2017\05\06\Split-Pdf.ps1
$pdfPath = 'Q:\Test\2017\05\06\'
$pdfFile = Join-Path $pdfPath "test.pdf"
$SetsOfPages = 3
$Match = 'NumberOfPages: (\d+)'
$NumberOfPages = [regex]::match((pdftk $pdfFile dump_data),$Match).Groups[1].Value
"{0,2} pages in {1}" -f $NumberOfPages, $pdfFile

for ($Page=1;$Page -le $NumberOfPages;$Page+=$SetsOfPages){
  $File = Get-Item $pdfFile
  $Range = "{0}-{1}" -f $page,[math]::min($Page+$SetsOfPages-1,$NumberOfPages)
  $OutFile = Join-Path $pdfPath ($File.BaseName+"_$Range.pdf")
  "processing: {0}" -f $OutFile
  pdftk $pdfFile cat $Range output $OutFile
}

编辑了,以处理页面的变量集,并正确处理挂起的问题。

再次编辑:找到了一个更简单的方法来缩短最后一组页面。

样本输出

代码语言:javascript
复制
> .\Split-Pdf.ps1
10 pages in Q:\Test\2017\05\06\test.pdf
processing: Q:\Test\2017\05\06\test_1-3.pdf
processing: Q:\Test\2017\05\06\test_4-6.pdf
processing: Q:\Test\2017\05\06\test_7-9.pdf
processing: Q:\Test\2017\05\06\test_10-10.pdf
票数 8
EN

Stack Overflow用户

发布于 2017-05-07 09:33:42

您可以使用sejda-console,它在AGPLv3下是开源的,可以从项目GitHub页面下载。

您可以使用以下splitbyevery命令:

拆分给定的PDF文档,每个'n‘页创建每个'n’页的文档。

在这种情况下,命令行将类似于:

sejda-console splitbyevery -n 2 -f /tmp/input_file.pdf -o /out_dir

票数 5
EN

Stack Overflow用户

发布于 2017-05-05 14:22:26

您可以使用cat关键字从所需的页面生成文件。

代码语言:javascript
复制
pdftk in.pdf cat 1-2 output out1.pdf
pdftk in.pdf cat 3-4 output out2.pdf

为了更容易使用,可以添加bash脚本:

代码语言:javascript
复制
 #!/bin/bash 
 COUNTER=0
 while [  $COUNTER -lt $NUMBEROFPAGES ]; do
     pdftk in.pdf cat $COUNTER-$COUNTER+1 output out1.pdf
     let COUNTER=COUNTER+2 
 done
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43805726

复制
相关文章

相似问题

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