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 @ 2025-02-26 23:57  绿草蓝天  阅读(173)  评论(0)    收藏  举报