diff --git a/hutool-extra/pom.xml b/hutool-extra/pom.xml
index 986acdf7f..eb74276f9 100755
--- a/hutool-extra/pom.xml
+++ b/hutool-extra/pom.xml
@@ -151,6 +151,12 @@
2.1.10
true
+
+ io.pebbletemplates
+ pebble
+ 3.2.0
+ true
+
diff --git a/hutool-extra/src/main/java/cn/hutool/extra/template/engine/pebble/PebbleTemplate.java b/hutool-extra/src/main/java/cn/hutool/extra/template/engine/pebble/PebbleTemplate.java
new file mode 100644
index 000000000..12a3ebcfe
--- /dev/null
+++ b/hutool-extra/src/main/java/cn/hutool/extra/template/engine/pebble/PebbleTemplate.java
@@ -0,0 +1,65 @@
+package cn.hutool.extra.template.engine.pebble;
+
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.reflect.TypeReference;
+import cn.hutool.extra.template.Template;
+import cn.hutool.extra.template.TemplateException;
+import cn.hutool.extra.template.engine.velocity.VelocityTemplate;
+
+import java.io.*;
+import java.util.Map;
+
+/**
+ * @author:zooooooooy
+ */
+public class PebbleTemplate implements Template {
+
+ private final io.pebbletemplates.pebble.template.PebbleTemplate template;
+
+ public PebbleTemplate(io.pebbletemplates.pebble.template.PebbleTemplate template) {
+ this.template = template;
+ }
+
+ /**
+ * 包装pebbleTemplate模板
+ * @param template
+ * @return
+ */
+ public static PebbleTemplate wrap(final io.pebbletemplates.pebble.template.PebbleTemplate template) {
+ return (null == template) ? null : new PebbleTemplate(template);
+ }
+
+ /**
+ * 渲染对象
+ * @param bindingMap 绑定的参数,此Map中的参数会替换模板中的变量
+ * @param writer 输出
+ */
+ @Override
+ public void render(Map, ?> bindingMap, Writer writer) {
+
+ final Map map = Convert.convert(new TypeReference