删除 pdf 中的重复页面

fic*_*ich 4 pdf pdftk

我有一份 pdf 文档,总共 900 页,其中有 200 多个重复页面。当存在重复项时,它会立即出现在原始项之后。

也许pdftk可以完成这项工作,但我需要某种方法来找出重复项......

Fel*_*xJN 5

comparepdf是一个用于比较 PDF 的命令行工具。如果文件相同则退出代码0,否则为非零。您可以通过文本内容或视觉进行比较(例如扫描有趣):

comparepdf 1.pdf 2.pdf
comparepdf -ca 1.pdf 2.pdf #compare appearance instead of text
Run Code Online (Sandbox Code Playgroud)

所以你可以做的是分解 PDF,然后成对比较并相应删除:

#!/bin/bash
#explode pdf
pdftk original.pdf burst
#compare 900 pages pairwise
for (( i=1 ; i<=899 ; i++ )) ; do
  #pdftk's naming is pg_0001.pdf, pg_0002.pdf etc.
  pdf1=pg_$(printf 04d $i).pdf
  pdf2=pg_$(printf 04d $((i+1))).pdf
  #Remove first file if match. Loop not forwarded in case of three or more consecutive identical pages 
  if comparepdf $pdf1 $pdf2 ; then
     rm $pdf1
  fi
done
#renunite in sorted manner:
pdftk $(find -name 'pg_*.pdf' | sort ) cat output new.pdf
Run Code Online (Sandbox Code Playgroud)

编辑:根据@notauto generated 的评论,人们可能会选择从原始文件中选择页面,而不是统一单页 PDF。两两比较完成后,可以执行以下操作:

pdftk original.pdf cat $(find -name 'pg_*.pdf' |
                        awk -F '[._]' '{printf "%d\n",$3}' |
                        sort -n ) output new.pdf
Run Code Online (Sandbox Code Playgroud)