欢迎进入Wiki » FAQ » PDF套打失败?

PDF套打失败?

在2015-06-30 19:36上被李小翔修改
评论 (0) · 附件 (5) · 记录 · 信息

供稿人:张文秀

PDF套打的大致过程是:先导出word的xml文件,然后通过文档转换服务BroFileConvert转换成pdf文件;而BroFileConvert实际做是把xml文件用word打开,然后另存为为pdf文件后返回。

生产机有时候会遇到同一个流程,之前导出功能都好使,突然有一个单子的导出pdf不能导出而且后台报 java.net.SocketTimeoutException: Read timed out,这种情况大多数是生成的xml文件word不能正常解析,可能是数据中有特殊字符导致的或者是因为代码问题生成的xml不正确,BroFileConvert不能返回pdf文件导致超时。

查看文档转换服务器的控制台,可以看到下面的日志输出:

1.png

注:BroFileConvert日志也会显示报错信息Word文件打开失败,其实这里也会显示出错位置831行

解决方案:

  1. 将PDF套打改成Word套打
  2. 使用Word打开导出的doc文件,检查错误的代码并修复

具体步骤如下。

在页面上中找到隐藏域 <g:hiddenField name="_export_format" value="pdf" />, 把value值改成doc:

2.png

把相应的 export.pdf.gsp 视图复制、并改名成 export.doc.gsp 放在相同目录下,此时,再点击页面上的导出按钮,得到的是后缀为doc的Word的文件:

3.png

用Word打开导出的doc文件,就会有提示:

4.png

看这个错误是名称字符非法,而且还有具体位置,把这个导出文件用文本编辑器打开,到相应的行数就可以看见是哪里的数据有问题了:

5.png

可以看到,831行是特殊字符导致Word打开失败,这个就可以找到对应是那个数据有问题了,然后在 gsp 中找到相应代码加 “.encodeAsHTML()”即可。

BTW:Excel、Word导出通常也可以使用这种方式来定位、处理问题。

在2015-06-30 19:32上被李小翔创建

Copyright © 2013 北京博瑞开源软件有限公司
京ICP备12048974号