相信各位RA小伙伴在注册申请递交的最后阶段,都经历过被“最后一轮PDF排查”的折磨。
书签层级是否规范?跳转链接是否失效?隐藏的元数据清理干净了吗?是否还有未删除的附件和动态内容?每份文件的页面尺寸和初始视图是否统一?
这些问题单看都不复杂,但在eCTD或海量文件的递交要求下,一旦文件数量成百上千,手工逐份处理不仅极其耗时,而且非常容易因为疲劳而产生遗漏。
也正因深知这种痛苦,我最近一直在持续开发一个更贴近RA实际工作流的桌面工具:RATools for PDF。
它不是一个面向所有人的通用型PDF阅读器或编辑器,更准确地说,它是一个专为RA定制的PDF批量标准化与质控工具。它要解决的问题很直接:把递交前那些高频、重复、容易返工的PDF处理动作,变成可以批量执行、可复核、可追踪的自动化流程。
核心功能
针对注册递交中的常见合规要求,RATools for PDF现已支持以下批量处理能力:
1. 初始视图与文档属性配置
统一阅读体验:批量将文档设为首页打开,重置页面布局与缩放比例,让审评老师打开文件的第一眼就是整洁的标准格式。
导览与元数据优化:自动设置导览标签(存在书签时自动显示书签面板),一键折叠所有书签。同时支持根据文件名自动写入PDF的“标题”属性,规范底层数据。
2. 页面与字体标准化
尺寸规范化转换:研发提供的图谱或外文文献经常出现非标页面。工具内置转换引擎,支持批量将非标页面无损转换为A4或Letter尺寸。
字体与加载优化:批量嵌入文档中缺失的非标准字体,避免跨设备查阅时出现乱码。同时支持PDF版本转换。
3. 书签管理
行为规范化:批量将书签的缩放比例设为递交要求的“承前缩放”,或将跳转动作统一改为“新窗口打开”。
异常清理:自动检测并删除书签中潜藏的外部网页链接、失效死链以及未知动作书签。
书签导出导入:支持将书签批量导出为与PDF同名的CSV文件,再通过CSV批量重新导入书签(导入时自动按文件名匹配)。
4. 超链接处理
路径与动作修正:一键将外部文件链接的绝对路径转换为相对路径(eCTD递交必备),并统一超链接为“承前缩放”或“新窗口打开”。
视觉样式统一:不必再手动逐个改颜色!自动将链接文本设为蓝色,按需增加或删除链接边框,一键统一全文档的“有框/无框蓝字”超链接样式。
超链接导出导入:超链接数据可导出为与PDF同名的JSON格式文件,便于PDF修改后重新批量导入(导入时同样按文件名自动匹配),省去重复做外链的工作。
5. 内容合规与安全性
外部与失效链接清除:批量删除不合规的外部URI网页链接(并支持将原蓝色文字还原为普通黑色文本),精准定位并删除失效链接及未知动作链接。
动态与隐藏元素剥离:药监机构严禁PDF中含有可执行脚本。工具可深度删除JavaScript、3D内容、动态表单、隐藏的文档附件、PDF注释及文档标签。
删除文档元数据:批量清理所有敏感文档元数据(如内部作者、修改时间),甚至支持在特殊场景下“一键删除所有链接和书签”。
6. 文件级优化
修改PDF版本:将PDF版本修改为1.7版本以符合监管要求。
启用线性化(快速网页浏览):优化文档结构以支持Web环境下的流式加载和边下边看。
规范命名:支持按eCTD规则规范化输出文件名,避免因特殊字符导致的验证报错。
除了基础的处理功能,这个项目在开发时更注重“落地”的务实体验:
批量过程实时可控:
在RATools for PDF中,批量处理时你可以实时看到当前进度条、完成数量和正在处理的文件名。如果整批任务需要中止,可以直接点击停止;如果某一个特殊文件卡住了,或者你临时不想继续处理当前文件,也能直接跳过,不必让整批任务一起跟着停摆。
详尽日志,方便复盘与留痕:
这是我个人非常看重的一点。处理完成后,用户不仅可以直接在界面查看日志,也可以一键导出完整的处理日志报告。这对于需要确认处理结果、回看操作过程、或者应对内部复核的场景来说极其关键。它让“批量处理”不只是单纯的追求快,而是做到有迹可循,让复盘和检查变得极其简单。
使用方法:开箱即用,零代码门槛
考虑到RA的实际使用场景,工具被封装成了一个纯本地化的桌面应用程序,你不需要懂任何Python代码或配置环境。
便捷导入:支持直接拖拽导入PDF文件,也支持直接导入整个文件夹。程序会自动递归收集其中的所有PDF文件。
按需勾选与快捷预设:在界面上,你可以根据本次递交的具体要求,自由勾选需要执行的处理项(如统一蓝字链接、转换为A4、清理元数据等)。同时,工具目前已内置了中国eCTD和美国eCTD两套快速预设,一键即可载入符合法规要求的标准配置(后续也会根据需要持续添加更多预设)。
一键执行:点击运行,喝杯咖啡的功夫,工具会自动完成所有枯燥的重复劳动。
数据安全提示: 本工具完全基于你的本地电脑离线运行,不需要连接互联网,更加安全可控。当然,你也可以使用前将源代码交给AI进行审查。
下载方法
项目使用Python进行开发,大部分代码工作通过Vibe Coding完成。为了让更多同行受益,代码已完全开源。
项目主页&源码地址:https://github.com/PharmaRA/RATools-for-PDF
直接获取免安装版,提供以下两种获取方式:
方式一(网盘):直接在本公众号后台回复关键词「RATools for PDF」(建议直接复制),即可获取最新打包版本的网盘下载链接。
方式二(GitHub):你也可以直接前往GitHub页面的Releases标签下,下载打包好的.zip文件。
进阶指南:如何使用源码自行打包
如果你出于安全考虑不希望直接下载打包好的程序,或者想要二次开发添加适合自己的专属功能,可以拉取源码自行打包。步骤非常简单:
准备环境:确保你的电脑已安装Python 3.8或以上版本。
克隆项目并安装依赖: 将源码下载到本地后,在终端中进入项目目录,运行以下命令安装必需的库: pip install -r requirements.txt
一键编译打包: 项目源码内贴心地提供了批处理脚本。你只需在Windows环境下双击运行build_pyinstaller.bat(使用PyInstaller打包,经过多次优化,推荐使用)或build_nuitka.bat(使用Nuitka编译,运行效率更高,但是暂未经优化,可能报错)。
等待脚本运行完毕后,你的专属独立可执行文件就会生成在dist文件夹中啦!
开源协议
本项目代码基于AGPL-3.0 License(GNU Affero通用公共许可证v3.0)发布,详见GitHub仓库中的LICENSE文件。
简单来说,这意味着:
免费使用:免费地下载作为本地工具使用它来处理注册递交文件。
自由修改:可以拉取源码进行二次开发,添加特定的功能。
开源传染性说明:AGPL-3.0是一种强调保护开源社区的强协议。如果您修改了源码并对外分发,或者将修改后的代码部署为网络服务((如内部/外部Web平台)供他人通过网络访问,那么您的修改版本也必须同样以AGPL-3.0开源。如果您仅仅是修改并打包成桌面端,留在自己电脑或公司内网本地独立运行,则不受强制开源影响。
开源的初衷,就是希望能通过社区共享的力量,切实帮助到更多被困在繁杂PDF整理工作中的同行。
写在最后
在药品注册递交的长征路上,PDF的排版与合规核查从来不是最具核心价值的科学内容,但它却像鞋子里的一粒沙,往往在最后冲刺阶段折磨人、消耗大家的精力。
RATools for PDF诞生的初衷非常纯粹,专注于把递交前必须做、重复做、且容错率极低的“标准化动作”,变得更自动化一点、更稳妥一点,也让递交前的复核更轻松一点。
如果你也正受困于海量PDF的批量整理、合规清理与反复核对,不妨试一试这个开源小工具,或许它能为你省下一些时间。
项目目前目前已经基本稳定使用,后续依旧会持续修复bug以及新增功能。个人的力量毕竟有限,如果您在实际递交场景中遇到了新的想法,有更棒的功能灵感,或遇到任何bug,非常欢迎在公众号留言区或GitHub上探讨。
如果你觉得这个工具切实提高了你的工作效率,欢迎去GitHub顺手点亮一颗Star,这是对开源的最大鼓励!
夜雨聆风