Java利用freemarker模板导出pdf(设置打印选项),实现每页都插入一个相同的图片(文字)

一,如果添加页眉页脚这种形式的,参考如下CSS样式

在这里插入图片描述
具体代码实例

@page:right{ 
  @bottom-left {![在这里插入图片描述](https://img-blog.csdnimg.cn/20210303133914151.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1Mzc3MzIz,size_16,color_FFFFFF,t_70)

    margin: 10pt 0 30pt 0;
    border-top: .25pt solid #666;
    content: "Our Cats";
    font-size: 9pt;
    color: #333;
  }
  @bottom-right { 
    margin: 10pt 0 30pt 0;
    border-top: .25pt solid #666;
    content: counter(page);
    font-size: 9pt;
  }
  @top-right {
    content: string(doctitle);
    margin: 30pt 0 10pt 0;
    font-size: 9pt;
    color: #333;
  }
}

效果如图:
在这里插入图片描述

二,如果想要实现每页都插入相同的元素,如:印章图片,或者相同的提示文字等等,参考如下CSS样式:

首先将要引入的图片或者文字引入freemarker模板文件中

<img class="signature-img" src="资源路径"/>

然后对该元素添加样式,即可实现多页pdf生成后每页都有这个图片

.signature-img{
	position: fixed;
}

三,另附其他设置选项

@page {
	size: 8.5in 11in;/*设置纸张大小为8.5 X 11英寸*/
	/*size: A4;*//*或者用这种别名的方式控制纸张大小*/
	/*size: A4 landscape;*//*后面的参数可以控制纸张打印方向,portrait: 纵向打印,  landscape: 横向。*/
	@bottom-center {/*设置居中页脚*/
		content: "第"counter(page)"页"; /*设置页脚内容为页码*/
		font-family:"Albany WT SC";/*设置页脚字体*/
		font-size: 12px;/*设置页脚字体大小*/
	}
}
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
您好,要实现Java中使用FreeMarker导出多个FTL模板文件,可以按照以下步骤进行: 1.在Java项目中引入FreeMarker依赖库。 2.创建多个FTL模板文件,并将它们保存在指定的目录下。 3.在Java代码中,使用FreeMarker的Configuration类来加载FTL模板文件,并将模板数据填充到模板文件中,生成输出结果。 4.如果需要嵌套使用多个FTL模板文件,可以使用include指令或import指令,将一个FTL模板文件中的内容插入到另一个FTL模板文件中。 下面是一个简单的例子,演示了如何在Java中使用FreeMarker导出多个FTL模板文件: ``` public static void main(String[] args) throws Exception { //创建Configuration对象 Configuration cfg = new Configuration(Configuration.VERSION_2_3_23); cfg.setDirectoryForTemplateLoading(new File("templates")); //加载第一个模板文件 Template template1 = cfg.getTemplate("template1.ftl"); //设置一个模板文件的数据模型 Map<String, Object> data1 = new HashMap<>(); data1.put("name", "John"); //将第一个模板文件的输出结果作为第二个模板文件的输入数据 StringWriter stringWriter = new StringWriter(); template1.process(data1, stringWriter); String result1 = stringWriter.toString(); //加载第二个模板文件 Template template2 = cfg.getTemplate("template2.ftl"); //设置第二个模板文件的数据模型 Map<String, Object> data2 = new HashMap<>(); data2.put("content", result1); //将第二个模板文件的输出结果写入到文件中 Writer out = new FileWriter(new File("output.html")); template2.process(data2, out); out.flush(); out.close(); } ``` 在上面的代码中,我们首先创建了一个Configuration对象,并指定了FTL模板文件所在的目录。然后,我们加载了两个FTL模板文件,并设置了它们的数据模型。最后,我们将第一个模板文件的输出结果作为第二个模板文件的输入数据,并将第二个模板文件的输出结果写入到文件中。 在实际应用中,您可能需要更复杂的模板嵌套结构,但是基本的实现思路是相同的。希望这个例子能帮助您理解如何在Java中使用FreeMarker导出多个FTL模板文件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rain-C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值