无法从 PDF 中删除空白页

无法从 PDF 中删除空白页

我想使用此线程中的脚本:从命令行删除 PDF 中的空白页

#!/bin/sh
IN="$1"
filename=$(basename "${IN}")
filename="${filename%.*}"
PAGES=$(pdfinfo "$IN" | grep ^Pages: | tr -dc '0-9')

non_blank() {
    for i in $(seq 1 $PAGES)
    do
        PERCENT=$(gs -o -  -dFirstPage=${i} -dLastPage=${i} -sDEVICE=inkcov "$IN" | grep CMYK | nawk 'BEGIN { sum=0; } {sum += $1 + $2 + $3 + $4;} END { printf "%.5f\n", sum } ')
        if [ $(echo "$PERCENT > 0.001" | bc) -eq 1 ]
        then
            echo $i
            #echo $i 1>&2
        fi
        echo -n . 1>&2
    done | tee "$filename.tmp"
    echo 1>&2
}

set +x
pdftk "${IN}" cat $(non_blank) output "${filename}.pdf"

首先,我遇到了几个语法错误,例如

(standard_in) 1: syntax error
./delete2.sh: 11: [: -eq: unexpected operator
.(standard_in) 1: syntax error
./delete2.sh: 11: [: -eq: unexpected operator
.(standard_in) 1: syntax error
./delete2.sh: 11: [: -eq: unexpected operator
.(standard_in) 1: syntax error
./delete2.sh: 11: [: -eq: unexpected operator
.

我可以通过添加括号和引号来修复此错误,但结果是输出 pdf 与输入 pdf 完全相同。空白页不会被删除。此外,使用额外的括号和引号,我在输出文件夹中得到了一个名为“0.001”的文件,它是代码中 $PERCENT 旁边的值:

如果 [ $(echo "$PERCENT > 0.001" | bc) -eq 1 ]

当我使用

gs -o out.tmp -sDEVICE=inkcov my.pdf

在终端中,我获得了 PDF 文件中页面的可重现结果。

有人能帮助我修复此代码,使其在装有 Debian bullseye 的 Raspberry Pi 3 上正常运行吗?

顺便说一句:我在我的 chromebook 上使用 debian bullseye 测试了该脚本,效果非常好。

答案1

我找到解决方案了!

export LC_ALL=C

这使得它工作

相关内容