我想使用此线程中的脚本:从命令行删除 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
这使得它工作