Skip to content

Instantly share code, notes, and snippets.

@alvarovm
Created October 31, 2023 06:57
Show Gist options
  • Save alvarovm/c2b18ed5bf9d0d715064a83b8c76f434 to your computer and use it in GitHub Desktop.
Save alvarovm/c2b18ed5bf9d0d715064a83b8c76f434 to your computer and use it in GitHub Desktop.
Bash script to blur some pages of PDF files
#!/bin/bash
# Create an empty array to store the random numbers
#Percentage of pages blured
porc=0.50
#npages=$(pdfinfo ${1} | grep Pages | awk '{print $2}')
#echo "total pages ${npages}"
pdfs=()
mapfile -d $'\0' pdfs < <(find . -name "*.pdf" -print0)
echo "${pdfs[@]}"
for p in ${pdfs[@]}
do
echo "Convert ${p} to PNG"
pdftoppm -png ${p} meta
files=()
mapfile -d $'\0' files < <(find . -name "meta*.png" -print0)
npages=${#files[@]}
ptotal=$(bc <<< "scale=10; ${npages} * ${porc}")
#Get integer number of pages
total=$( printf "%.0f" $ptotal )
range="2-${npages}"
numbers=()
# Generate the desired number of unique random numbers
while [ ${#numbers[@]} -lt ${total} ]; do
# Generate a random number from 5 to 10
random_number=$(shuf -i ${range} -n 1)
# Check if the random number is already in the array
if [ ! -v numbers[$random_number] ]; then
# Add the random number to the array
numbers[$random_number]=$random_number
fi
done
for e in ${numbers[@]}
do
pname="${files[$e]}"
convert $pname -blur 0x8 $pname
done
echo "Add banners ${p}"
for e in ${files[@]}
do
convert $e -annotate +50+50 'Copyright © 2023 Banner1' $e
convert $e -gravity SouthEast -annotate +50+50 'Copy for Banner2' $e
done
#rm output.pdf
rm ${p}
list=${files[@]}
echo "Create PDF ${p}"
convert -density 150 ${list} ${p}
rm meta*.png
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment