若依框架中使用FreeMarker使用word动态模板生成pdf给前端展示(模板中并没用使用到图片,所以没有图片的方法,只用了表格展示数据,模板里面只涉及到了循环判断和日期格式)

这篇具有很好参考价值的文章主要介绍了若依框架中使用FreeMarker使用word动态模板生成pdf给前端展示(模板中并没用使用到图片,所以没有图片的方法,只用了表格展示数据,模板里面只涉及到了循环判断和日期格式)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先使用word创建动态模板freemarker模板生成pdf,FreeMarker+aspose+若依,pdf

 下方两组信息是通过循环展示的,在生成模板时注意,如果不点击里面表格,选择居中表格打印出来可能还有偏差,两边距离页面拒了可能不一样

存储需要的模板时注意freemarker模板生成pdf,FreeMarker+aspose+若依,pdf

freemarker模板生成pdf,FreeMarker+aspose+若依,pdf 

freemarker模板生成pdf,FreeMarker+aspose+若依,pdf 

 存成这个格式,如果不是2003可能会有坑,找到你生成的.xml文件,把后缀改成ftl

freemarker模板生成pdf,FreeMarker+aspose+若依,pdf

 放到项目中的resources中即可点开文件格式化一下可以看的舒服些

在文件中找到你提前设置好的变量

 freemarker模板生成pdf,FreeMarker+aspose+若依,pdf

 字符串就可以改成这样,!''的意思是不为空就显示,如果你的一个单词被拆分了,你可以把其它<w:t></w:t>中的单词部分删除掉,只在一个<w:t></w:t>中这样写全你的单词就可以了,空的不知道删了还有没有想要的效果了,没有尝试

这是判断时间类型不为空和生成的时间格式,像这些一定要打成一行不要换行,换行可能会出现生成的内容错位

freemarker模板生成pdf,FreeMarker+aspose+若依,pdf

这是判断集合为不为空,如果是空里面的内容就不展示

 freemarker模板生成pdf,FreeMarker+aspose+若依,pdf

 这是循环集合

freemarker模板生成pdf,FreeMarker+aspose+若依,pdf

正常.内容就可以了

 freemarker模板生成pdf,FreeMarker+aspose+若依,pdf

 其他的就不知道了没研究,之前用过html生成的模板,但是模板中单元格内容多了就变形不知道什么原因,定死px也没用,没弄好,还是换成了word模板

public AjaxResult viewPdf(@PathVariable("id") Integer id, HttpServletResponse response)  {
//License.xml这是一个破解水印的
        InputStream inputStream = TbHealthRecordController.class.getClassLoader().getResourceAsStream("License.xml");
        License license = new License();
        try {
            license.setLicense(inputStream);
        } catch (Exception e) {
            e.printStackTrace();
        }
//TbHealthRecordController当前controller的名,.class都是需要换成当前Controller的名的
        URL resource = TbHealthRecordController.class.getClassLoader().getResource("");
        try {
            Configuration configuration = new Configuration();
            configuration.setDefaultEncoding("utf-8");
//模板路径
            configuration.setClassForTemplateLoading(TbHealthRecordController.class, "/templates");
//模板名称
            Template template = configuration.getTemplate("document.ftl");
            StringWriter swriter = new StringWriter();
            Map<String, Object> dataMap = new HashMap<String, Object>();
            //被许可方

//我是通过service去获取的map信息
            dataMap=tbHealthRecordService.getHMap(id);
            template.process(dataMap, swriter);
            ByteArrayInputStream is = new ByteArrayInputStream(swriter.toString().getBytes());
            Document doc = new Document(is);

            //PDF的路径
//这是存储的路径,因为用的绝对路径,生成的文件也是同名所以每生成一个文件都会自动顶替掉上一个文件,不用考虑会不会生成的文件太多的问题
//因为用的若依这里的RuoYiConfig.getUploadPath()获取的是yml里的路径,可以换
            doc.save(RuoYiConfig.getUploadPath() +"/word/out/健康报告.pdf");
        } catch (Exception e) {
            e.printStackTrace();
        }
//这是读取pdf的位置要和生成的位置保持一致
            String pdfPath = RuoYiConfig.getUploadPath() +"/word/out/健康报告.pdf";

//这个注释的打开使用我的若依就报错进行重启但是pdf还是展示的不知道什么原因,没有他也不影响使用
//            response.setContentType("application/pdf");
            FileInputStream in;
            OutputStream out2;
            try{
                in = new FileInputStream(new File(pdfPath));
                out2 = response.getOutputStream();
                byte[] b = new byte[2048];
                while ((in.read(b)) != -1) {
                    out2.write(b);
                }
                out2.flush();
                in.close();
                out2.close();
            } catch (Exception e) {
                e.printStackTrace();
            }


        return AjaxResult.success("转换成功");
    }

 这是破解水印用的

<?import com.aspose.words.License?>
<License>
    <Data>
        <Products>
            <Product>Aspose.Total for Java</Product>
            <Product>Aspose.Words for Java</Product>
        </Products>
        <EditionType>Enterprise</EditionType>
        <SubscriptionExpiry>20991231</SubscriptionExpiry>
        <LicenseExpiry>20991231</LicenseExpiry>
        <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>
    </Data>
    <Signature>
        sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=
    </Signature>
</License>

这个pdf方法需要用到

freemarker模板生成pdf,FreeMarker+aspose+若依,pdf

 aspose的本地jar包

本地jar包引入项目方法

<dependency>
            <groupId>com.aspose.words</groupId>
            <artifactId>aspose-words</artifactId>
            <version>15.8.0</version>
            <scope>system</scope>
//这里是你的jar包路径${basedir}不需要动,改后边路径就可以
            <systemPath>${basedir}/src/main/resources/lib/aspose-words-15.8.0-jdk16.jar</systemPath>
        </dependency>

前端vue接收

// 查看pdf
export function viewPdf(id) {
  return request({
    url: '/health/record/viewPdf/'+id,
    method: 'post',
    responseType:'blob',
  })
}
//这是页面的方法
viewPdf(id) {
      console.log(id);
      // 调用后端接口获取PDF数据
//这是页面引入的查询方法,这个方法是打开新的页面展示pdf
      viewPdf(id).then(response => {
          const binaryData = [];
          binaryData.push(response)
          this.pdfUrl=window.URL.createObjectURL(new Blob(binaryData,{type:'application/pdf'}));
          let url = window.URL.createObjectURL(response)

          window.open(this.pdfUrl);
          this.dialogVisible = false

      });
    }

这是前端的pdf效果

freemarker模板生成pdf,FreeMarker+aspose+若依,pdf

 文章来源地址https://www.toymoban.com/news/detail-758303.html

到了这里,关于若依框架中使用FreeMarker使用word动态模板生成pdf给前端展示(模板中并没用使用到图片,所以没有图片的方法,只用了表格展示数据,模板里面只涉及到了循环判断和日期格式)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • springboot基础(78):Freemarker模板生成word文档

    利用Freemarker模板生成word文档。示例,将左侧的模板生成为右侧的文档并下载。 1.编辑一份addr.docx文档 2. 另存为addr.xml文档 3. 打开addr.xml文件,修改内容,由于table表格,需要遍历list集合,需要添加 将addr.xml后缀更改为addr.ftl文件,存放到resources/templates下 导入依赖 编写contr

    2024年02月11日
    浏览(28)
  • 基于Java+freemarker实现动态赋值以及生成Word文档

    有一个需求就是给定一个正确格式的 Word 文档模板,要求通过动态赋值方式,写入数据并新生成 该模板格式的 Word 文档。这很明显使用 Java+freemarker 方式来实现颇为简单。 (1)准备好一个正确格式的 Word 文档(测试文档 - 原版.docx) (2)将其另存为xml文件(测试文档 - 原版

    2024年02月09日
    浏览(37)
  • freemarker 使用word模板赋值

    这里贴上自己测试的ftl文件 生成的效果 参考: https://blog.csdn.net/weixin_46174854/article/details/116855252 https://blog.csdn.net/weixin_45853881/article/details/129298494 https://blog.csdn.net/qq_42851623/article/details/122879852 https://blog.csdn.net/weixin_45103378/article/details/118395284 https://www.cnblogs.com/ayueC/p/15118381.html

    2024年02月11日
    浏览(32)
  • aspose 使用ftl模板生成word和pdf

    1 先找到word模板,用${},替换变量,保存,然后另存为xml,最后把xml后缀改成ftl。 如下图: word 模板文件 ftl模板文件如下: 2 代码生成 下面函数将ftl填充数据,并生成word和pdf 3 测试主程序 4 结果: pdf文件 word文件 还可以生成图片:

    2024年02月13日
    浏览(27)
  • JAVA利用Freemarker模版动态生成并导出word文档(全网最详细)

    公司的某个需求,需要根据接口的信息生成一份word接口文档信息并支持导出功能。以前没做过这种需求,于是搜罗各种资料,最终发现java利用freemarker模版可以实现这个功能。 1、需要的环境 2、创建模板 1)展示word文档如下所示: 2)将word文档动态的参数替换成占位符,如下

    2024年02月16日
    浏览(32)
  • Java使用ftl模板文件生成Word,以及Word转换图片或Pdf工具类

    一、写在前面 最近在项目中使用打印功能,发现这个功能我已经写过多次了,下面这个文章的发步日期在2020年,不得不感慨时间之快啊。 https://blog.csdn.net/weixin_43238452/article/details/109636200?spm=1001.2014.3001.5501 下面介绍一下应用场景:这次项目依旧是springboot项目,使用ftl模版生

    2024年02月15日
    浏览(42)
  • 根据模板动态生成word(三)使用poi-tl生成word

    @ 目录 一、前言 1、什么是poi-tl 2、官方信息 2.1 源码仓库 2.2 中文文档 2.3 开源协议 3、poi-tl的优势 3.1 poi-tl和其他模板引擎的对比 3.2 poi-tl Word模板引擎支持的功能 二、基本的使用配置 1、引入依赖 1.1 Maven 1.2 Gradle 2、配置 2.1 新建配置 2.2 标签前后缀替换 2.3 加载模板 2.4 填充数

    2024年02月13日
    浏览(36)
  • Java使用poi-tl生成word模板-动态数据列表

    Java使用poi-tl生成word模板-动态数据列表 第一步,添加poi-tl的依赖 第二步,准备word模板文件             模板中文本信息可以用    {{  }}   标签指定             例如在word文档中写入:{{var}} //会将word文档中的对位置的标签替换为map中的数据             模板

    2024年02月14日
    浏览(32)
  • Java根据word模板生成word文档并转成PDF文件

    定义完我们的模板之后,我们要将文档保存为xml的格式 生成的xml格式看起来比较乱,没有层次感, 所以需要格式化一下 格式化 基础信息的定义 基础信息的定义只要保证我们转化成的xml文件中的${name}等格式没错误即可 表格的定义 遍历实现,表格的数据填充 在xml文件中我们的

    2024年02月09日
    浏览(43)
  • 使用FreeMarker生成word文件自定义每页页眉或页脚

    最新工作中遇到生成word中表格时,要求文档中每页头部和底部都是固定格式的表格,但是内容不一样,头部信息在word中画样式的时候就可以设置为“在各页顶端以标题形式重复出现”,而底部就没有办法这样设置了,之后就想着在眉脚中设置相应的样式就可以啦,但是发现

    2024年02月16日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包