freemarker生成world转PDF转SWF,加载到浏览器.解决最终浏览器加载的是xml代码的问题.

freemarker生成world转PDF转SWF,加载到浏览器.解决最终浏览器加载的是xml代码的问题.

首先说一下需求:动态生成world,客户可在浏览器预览freemarker动态生成的world文档.

失败的解决方法: 

1. world转xml, 编辑xml,用${}替换动态改变的值。

2. freemarker动态替换${}占位符的值, 更改后缀名为doc。

3. 系统安装openoffice工具,启动openoffice服务,jodconverter 调用命令将doc转成pdf.

4. 系统安装swftools工具, 调用命令,将pdf转成swf.(很多插件支持直接加载pdf到浏览器,但是对于老版本的IE,兼容性并不好,但是swf文件基本所有浏览器都支持,所以为了老版本ie兼容性,就做了一步转swf)

5. 前台js插件flashPaper,直接加载服务器上的swf文件.

最终效果, doc和pdf文档直接双击可以打开,显示的也正常。但是flashPaper加载到浏览器则显示的是一堆xml格式代码,这个代码就是freemarker生成的doc右键文本打开后的xml代码. 经过翻阅资料,flashPaper包括很多插件不支持直接加载xml形式的doc文档(可能是我没找到正确方法,如果您有, 请给留个言,谢谢),如果非要加载,那么显示到浏览器上的就会是一推xml代码。主要原因可能是freemarker产生的doc实际上只是个xml文档,右键可打开文本查看,但是直接在桌面新建的doc,docx文档右键则打不开(实际上这样建立的doc docx是一个压缩文件)


新的解决方法:

1. 新建docx文档(07版本的), 编辑docx,需要用freemarker替换的数据用${x}代替,保存 注意: 替换变量${x}时最好一次性写完,要不可能xml文档混乱

2. 右键以压缩文件形式打开,在world/下找到document.xml文件,是freemarker需要输出的结果xml文件.格式化xml查看${}占位是否有问题,有问题

不要直接改,重新编辑world,重复1步骤开始。

3. 第2步没问题,将docx文件和导出来的xml文件复制到ftl/test下,xml重命名为docx的名字.(我建立的是javaweb项目,ftl/test是在类路径下,以方便

根据类路径可读取到这个包)

4. FreemarkerUtil.printFile 根据第三步的xml生成替换后新的xml,临时保存

5. XmlToDocxDocument.printDocx 根据第三步docx模板文件,用新的x

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通过使用Freemarker,可以将XML文件换为PDF。首先,我们需要将Word模板另存为XML格式,并将文件后缀名改为.ftl。然后,在.ftl文件中,使用占位符将相关变量填充进去。接下来,通过赋值给这些变量,可以使用Freemarker将这些值填充到对应的位置上。最后,将此XML文件换为流,并使用Aspose将流换为PDF文件即可。 需要注意的是,对于不包含宏、函数等的Word或Excel文件,也可以使用Freemarker以模板的方式动态生成这些文件。对于Word文件,可以将其另存为XML格式,然后使用Freemarker进行动态编辑;对于Excel文件,暂时不支持直接使用模板动态生成xlsx文件。 具体操作步骤如下: 1. 将Word文档另存为XML文档,并使用文本编辑器(如Notepad)打开XML文件。 2. 将需要修改的内容改为变量,并保存此文档。 3. 将XML文档的后缀名改为.ftl,即将其换为Freemarker模板文档。 4. 添加Freemarker依赖并进行配置。 5. 将.ftl模板文件换为流。 6. 使用Aspose将流换为PDF文件。 通过以上步骤,我们可以成功地将XML文件换为PDF文件,实现Freemarker XMLPDF的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [利用aspose把freemarker模板换为PDF](https://blog.csdn.net/weixin_44117635/article/details/122605083)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [JAVA项目代码绘制PDF和通过freemarker动态生成PDF](https://download.csdn.net/download/hhao0503/87824768)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值