-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsplit-pdf
executable file
·38 lines (29 loc) · 1.06 KB
/
split-pdf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/bash
# Input PDF file path (first argument)
input_pdf="$1"
# Output directory for split PDFs (second argument)
output_dir="$2"
# Number of pages per output PDF (third argument)
pages_per_pdf="$3"
# Check if all arguments are provided
if [ $# -ne 3 ]; then
echo "Usage: $0 <input_pdf> <output_dir> <pages_per_pdf>"
exit 1
fi
# Ensure output directory exists, create it if not
mkdir -p "$output_dir"
# Count total pages in input PDF
total_pages=$(pdftk "$input_pdf" dump_data | grep NumberOfPages | awk '{print $2}')
# Calculate number of output PDFs needed
num_output_pdfs=$(( ($total_pages + $pages_per_pdf - 1) / $pages_per_pdf ))
# Split PDF into multiple PDFs
for (( i=1; i<=$num_output_pdfs; i++ )); do
start_page=$(( ($i - 1) * $pages_per_pdf + 1 ))
end_page=$(( $i * $pages_per_pdf ))
if [ $end_page -gt $total_pages ]; then
end_page=$total_pages
fi
output_pdf="${output_dir}/$(basename "$input_pdf" .pdf)-part${i}.pdf"
pdftk "$input_pdf" cat $start_page-$end_page output "$output_pdf"
echo "Created: $output_pdf"
done