PDF工具: pdftk

delete pages

#!/bin/bash
# 检查 pdftk 是否安装
if ! command -v pdftk &> /dev/null
then
echo "pdftk 未安装,请先安装 pdftk。"
exit 1
fi
# 检查是否提供了 PDF 文件作为参数
if [ $# -ne 1 ]; then
echo "用法: $0 <input_pdf_file>"
exit 1
fi
input_file=$1
# 检查输入文件是否存在
if [ ! -f "$input_file" ]; then
echo "输入的 PDF 文件 $input_file 不存在。"
exit 1
fi
# 获取总页数
total_pages=$(pdftk "$input_file" dump_data | grep "NumberOfPages" | awk '{print $2}')
# 提示用户输入要去除的页面
read -p "请输入要去除的页面(可以是单个页码或用逗号分隔的多个页码,如 3 或 3,5): " pages_to_remove
# 生成页面范围
page_range=""
for ((i = 1; i <= total_pages; i++)); do
skip=false
for page in $(echo $pages_to_remove | tr ',' ' '); do
if [ "$i" -eq "$page" ]; then
skip=true
break
fi
done
if [ "$skip" = false ]; then
if [ -z "$page_range" ]; then
page_range="$i"
else
page_range="$page_range $i"
fi
fi
done
# 执行 pdftk 命令
output_file="${input_file%.*}_removed.pdf"
pdftk "$input_file" cat $page_range output "$output_file"
echo "已生成去除指定页后的文件: $output_file"

divide pages

#!/bin/bash
# 检查 pdftk 是否安装
if ! command -v pdftk &> /dev/null
then
echo "pdftk 未安装,请先安装 pdftk。"
exit 1
fi
# 检查是否提供了 PDF 文件作为参数
if [ $# -ne 1 ]; then
echo "用法: $0 <input_pdf_file>"
exit 1
fi
input_file=$1
# 检查输入文件是否存在
if [ ! -f "$input_file" ]; then
echo "输入的 PDF 文件 $input_file 不存在。"
exit 1
fi
# 获取 PDF 文件的总页数
total_pages=$(pdftk "$input_file" dump_data | grep "NumberOfPages" | awk '{print $2}')
# 计算分割的组数
groups=$(( (total_pages + 49) / 50 ))
# 进行分割
for ((i = 1; i <= groups; i++)); do
start_page=$(( (i - 1) * 50 + 1 ))
end_page=$(( i * 50 ))
if [ $end_page -gt $total_pages ]; then
end_page=$total_pages
fi
output_file="${input_file%.*}_${start_page}-${end_page}.pdf"
pdftk "$input_file" cat $start_page-$end_page output "$output_file"
echo "已生成文件: $output_file"
done

merge pages

#!/bin/bash
# 检查 pdftk 是否安装
if ! command -v pdftk &> /dev/null
then
echo "pdftk 未安装,请先安装 pdftk。"
exit 1
fi
# 初始化文件列表
file_list=""
# 生成文件列表
for i in $(seq 1 50 700); do
start=$i
end=$((i + 49))
if [ $end -gt 700 ]; then
end=700
fi
file="z-$start-$end.pdf"
if [ -f "$file" ]; then
file_list="$file_list $file"
else
echo "文件 $file 不存在,跳过。"
fi
done
# 合并文件
if [ -n "$file_list" ]; then
pdftk $file_list cat output merged.pdf
echo "PDF 文件合并完成,合并后的文件名为 merged.pdf。"
else
echo "没有找到有效的 PDF 文件进行合并。"
fi
posted @   绿草蓝天  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示