You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用qpdf/pdftk批量修正PDF前两页后颠倒的奇偶页顺序

PDF页码错位批量修复方案

问题特征说明

所有异常PDF前2页顺序正常,从第3页开始每两页顺序互换,物理页顺序为1-2-4-3-6-5…,需批量调整为正常顺序。


方案1:qpdf 实现(推荐,维护活跃、兼容性强)

单个文件处理命令

# 替换输入输出文件名即可,自动适配任意总页数
qpdf 输入文件.pdf --pages . 1 2 $(for ((i=3; i<=$(qpdf --show-npages 输入文件.pdf); i+=2)); do ((i+1<=$(qpdf --show-npages 输入文件.pdf))) && echo -n "$((i+1)) $i " || echo -n "$i "; done) -- 输出文件.pdf

批量处理bash脚本

#!/bin/bash
# 依赖:提前安装qpdf
# 功能:批量处理当前目录所有未修复的PDF,输出文件名加_fixed后缀

shopt -s nullglob
for pdf_file in *.pdf; do
    # 跳过已修复的文件和非文件项
    [[ "$pdf_file" == *_fixed.pdf ]] || [[ ! -f "$pdf_file" ]] && continue
    output_file="${pdf_file%.pdf}_fixed.pdf"
    total_pages=$(qpdf --show-npages "$pdf_file")
    page_seq="1 2"

    # 生成修复后的页码序列
    for ((i=3; i<=total_pages; i+=2)); do
        if (( i+1 <= total_pages )); then
            page_seq="$page_seq $((i+1)) $i"
        else
            page_seq="$page_seq $i"
        fi
    done

    # 执行修复
    qpdf "$pdf_file" --pages . $page_seq -- "$output_file"
    if (( $? == 0 )); then
        echo "处理成功:$pdf_file → $output_file"
    else
        echo "处理失败:$pdf_file"
        rm -f "$output_file" 2>/dev/null
    fi
done

方案2:pdftk 实现

单个文件处理命令

# 总页数为10的示例,可根据实际页数调整页码序列
pdftk 输入文件.pdf cat 1 2 4 3 6 5 8 7 10 9 output 输出文件.pdf

批量处理逻辑

和上述qpdf脚本逻辑一致,仅需修改执行修复的行为:

pdftk "$pdf_file" cat $page_seq output "$output_file"

页码序列获取方式不变,总页数可以通过pdftk "$pdf_file" dump_data | grep NumberOfPages | awk '{print $2}'获取。


其他无GUI替代方案

  • 使用Python的pypdf/PyPDF2库实现,适合需要自定义更复杂页码规则的场景,代码量少,跨平台兼容性好
  • 使用MuPDF套件的mutool工具,性能更高,命令逻辑和qpdf类似,支持动态拼接页码范围

内容的提问来源于stack exchange,提问作者AHellOfAJourney

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:54:03