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

如何从加密XFA格式PDF中提取IMM 008表单的国家编码?

提取加密XFA PDF中的IMM 008编码映射方案

针对加密的XFA格式IMM 008表单,以下是几个比手动提取更高效可靠的解决方案:

1. 先解密PDF再提取XFA数据

大部分政府加密PDF仅设置了“禁止导出”类权限,并非强加密。可以用命令行工具qpdf解除权限限制:

qpdf --decrypt imm0008enu_2d.pdf decrypted_imm0008.pdf

解密完成后,用Adobe Acrobat打开解密后的文件,通过「文件 > 导出 > 表单数据 > XML」导出XFA数据集。打开导出的XML文件,你会找到所有下拉控件的选项映射——比如国家选择控件会包含类似<item value="511">Canada</item>的节点,直接提取value(编码)和文本的对应关系即可。

2. 直接从解密PDF中提取XFA XML

如果没有Acrobat,解密后可以用文本编辑器打开PDF文件,搜索<xfa:datasets>标签,找到内嵌的XFA XML区块。将这段XML复制出来,用lxml或BeautifulSoup等工具解析,自动提取所有下拉选项的编码与名称映射。

示例Python脚本框架:

import re
from lxml import etree

# 读取解密后的PDF文件
with open('decrypted_imm0008.pdf', 'rb') as f:
    content = f.read().decode('utf-8', errors='ignore')

# 提取XFA数据集部分
xfa_match = re.search(r'<xfa:datasets>.*?</xfa:datasets>', content, re.DOTALL)
if xfa_match:
    xfa_xml = xfa_match.group()
    root = etree.fromstring(xfa_xml.encode('utf-8'))
    
    # 遍历所有下拉选项(根据实际控件名称调整XPath)
    for item in root.xpath('//item'):
        code = item.get('value')
        name = item.text.strip()
        print(f"{code}: {name}")

3. 查找公开的现成映射表

IMM 008是常用移民表单,很多开发者或移民从业者已经整理过编码映射。可以在代码托管平台、移民相关开发者社区搜索“IMM 008 code mapping”或“IMM008 country codes”,大概率能找到现成的CSV/JSON格式映射表,直接导入你的应用即可。

注意:确保解密和使用表单数据的行为符合加拿大IRCC的相关规定,仅用于合法的社区服务用途。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 11:01:01