得好好说道说道这个XFA玩意儿。起初我压根不知道这是个啥东西,就是前阵子接了个活儿,客户要求做一个PDF,但不是普通的那种只能看的,而是要那种能在上面直接填东西的,比如姓名、地址,还要有那种可以打勾的框框,还有单选按钮啥的,就是那种交互式的表单。
我一开始心想,这不就是个高级点的Word文档转PDF嘛简单!结果一上手就傻眼了。普通的PDF编辑器根本搞不定客户说的那些动态效果,比如根据你选的某个选项,下面会冒出新的输入框。抓瞎了几天,到处问,到处搜,才模模糊糊知道,,原来这种东西很多是用一种叫XFA的技术做的。
折腾的开始
知道了是XFA,下一步就是找家伙事儿了。网上说Adobe自己有个工具叫Adobe LiveCycle Designer,专门干这个的。得,那就装上试试呗。这软件一下载安装,打开一看,嚯,界面那叫一个“专业”,按钮多得能让你眼花缭乱。我当时就感觉这活儿不简单。
我琢磨着,不就是拖拖拽拽嘛跟画图软件也差不多。于是我就开始捣鼓:
- 先是画文本框,就是那种让人家填字的地方。
- 然后是复选框,就是可以打勾勾的。
- 还有单选按钮,一组里面只能选一个那种。
- 客户还特别强调了要有交互按钮,比如“提交”、“重置”之类的。
这些基本的控件放上去倒是不难,可视化编辑器嘛对着拖就行。但麻烦的是怎么让这些东西“活”起来,比如我填完一个地方,另一个地方能自动计算个或者我选了这个,那个就不能选。这就涉及到脚本了,我以前哪弄过这个,对着帮助文档一点点啃,头都大了。
遇到的坑
在用那个LiveCycle Designer的时候,真是没少走弯路。比如那个数据绑定,想让填的内容能保存或者提交,就得设置一堆东西。还有就是预览,你在设计器里看着好好的,一生成PDF,用阅读器打开,可能某个按钮就点不动了,或者某个字段显示不出来。反反复复调试,那段时间真是焦头烂额。
我还记得当时想偷个懒,想着能不能用代码批量生成或者修改这些XFA表单里的字段。查了查,好像有个叫iText的库能处理PDF,但一涉及到XFA这种动态玩意儿,据说也是麻烦得很,很多开发者都说字段填不进去或者读不出来。我试着看了几眼相关的资料,感觉水太深,我这点三脚猫功夫还是老老实实用设计器。
后来我还发现,这种XFA表单虽然功能强大,但兼容性有时候也是个问题。有些第三方的PDF阅读器对XFA的支持就没那么客户那边用各种各样的软件,万一打不开或者显示错乱,那麻烦就大了。
咋样了
那个表单还是磕磕绊绊做出来了。 花了大力气研究LiveCycle Designer的各种功能,特别是那些脚本逻辑,怎么让表单根据用户的输入动态变化。客户看了之后,基本满意,说是达到了他们要的那种“交互感”。
搞完这个XFA之后,我自个儿也琢磨。这玩意儿虽然能做出很复杂的动态PDF表单,但学习成本真的不低,制作起来也挺费劲。后来我看Adobe自己也开始推一些新的表单技术,说是更现代、更灵活。想想也是,技术总是在进步的嘛现在不也流行什么低代码表单搭建,点点选选就能搞定,虽然可能没XFA那么底层和强大,但对付一般需求估计也够用了。
这回跟XFA打交道的经历,真是让我对PDF表单有了个全新的认识。以前以为PDF就是个只读文档,没想到还能玩出这么多花样。虽然过程挺折腾,但也算是长了见识,以后再碰到类似的玩意儿,心里多少有点数了。
还没有评论,来说两句吧...