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

使用PyPDF2合并PDF时遇Unexpected destination '/__WKANCHOR_2'错误求解决

解决PyPDF2合并PDF时的"Unexpected destination '/__WKANCHOR_2'"错误

这个报错大多是因为PyPDF2对某些PDF(比如Wkhtmltopdf生成的文件)里的特殊锚点处理不兼容导致的,下面给你几个实用的解决办法:

方案1:切换到PyPDF4库

PyPDF4是PyPDF2的分支版本,修复了不少兼容性问题,对这类锚点错误的处理更友好:

  • 先安装依赖:
    pip install PyPDF4
    
  • 修改你的代码,只需要替换导入的库即可:
    from PyPDF4 import PdfFileMerger, PdfFileReader
    filepath_list = ['/tmp/abc.pdf','/tmp/xyz.pdf']
    merger = PdfFileMerger()
    for file_name in filepath_list:
        with open(file_name, 'rb') as f:
            merger.append(f)
    merger.write("result.pdf")
    merger.close()  # 记得加上这行释放资源
    

方案2:用pdfrw库实现合并

pdfrw对复杂PDF的兼容性表现也不错,尤其擅长处理这类特殊锚点场景:

  • 先安装库:
    pip install pdfrw
    
  • 使用以下代码完成合并:
    from pdfrw import PdfReader, PdfWriter
    
    filepath_list = ['/tmp/abc.pdf','/tmp/xyz.pdf']
    writer = PdfWriter()
    
    for path in filepath_list:
        writer.addpages(PdfReader(path).pages)
    
    writer.write("result.pdf")
    

方案3:预处理修复PDF的锚点问题

如果必须坚持用PyPDF2,可以先用工具预处理PDF,修复有问题的锚点。比如用ghostscript命令行工具:

# 修复第一个PDF
gs -o fixed_abc.pdf -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress /tmp/abc.pdf
# 修复第二个PDF
gs -o fixed_xyz.pdf -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress /tmp/xyz.pdf

之后再用你原来的代码合并修复后的fixed_abc.pdf和fixed_xyz.pdf即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:24:21