利用Freamarker模板生成PDF文件

本文中源代码是参考各论坛上的代码~~然后爬坑上生产,今天写这个主要是回忆一下爬坑的过程,如有侵权,请告知,谢谢!

大致的实现思路:Freamarker 模板-->模板引擎-->转成文件流输出

需要熟悉的技术点,Freamarker模板语言、ITextpdf ...

看着很简单,其实坑还是有点多的

字体的坑:字体需要从网上自行下载,然后放到项目中,也有论坛里面说从windows系统字体库里面拿~~~(我不记得有没有这么干过,但是我最后是从网上下载的字体库),这不是最坑的地方,最坑的地方是  ftl文件中需要自定义样式,主动声明使用哪一种字体,否则中文就不显示啦~比如我写了一个ftl文件,header里面需要定义一个style:

        body {
            font-family: KaiTi_GB2312;
        }

路径的坑:windows路径和Linux服务器上路径是不一样的~~这个大家都知道哈~~正常来说,通过类的上下文获取文件路径,获取字体文件,这应该是比较完美的,但是打包发布之后,不知道为啥一直获取不到字体文件,错误信息就是字体文件失效(有知道的麻烦告知一下~谢谢!~ 另外,字体失效在windows环境下偶尔也会出现,不知道原因,只能替换字体文件来解决)-_-!   最终采用了写死路径,根据获取到的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java中的Apache PDFBox库生成PDF文件并应用模板。以下是一个示例代码: ```java import java.io.File; import java.io.IOException; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPageContentStream; import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.pdmodel.edit.PDPageContentStream; import org.apache.pdfbox.pdmodel.font.PDType1Font; import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm; import org.apache.pdfbox.pdmodel.interactive.form.PDTextField; import org.apache.pdfbox.pdmodel.interactive.form.PDCheckbox; public class PDFWriter { public static void fillForm(String templatePath, String outputPath) throws IOException { PDDocument document = PDDocument.load(new File(templatePath)); PDAcroForm acroForm = document.getDocumentCatalog().getAcroForm(); // Fill text fields PDTextField field = (PDTextField) acroForm.getField("name"); field.setValue("John Doe"); // Fill checkboxes PDCheckbox checkbox = (PDCheckbox) acroForm.getField("isMarried"); checkbox.check(); document.save(new File(outputPath)); document.close(); } } ``` 在这个示例中,我们首先加载一个现有的PDF模板,然后使用模板中的表单字段填写PDF文件。您可以根据您的需要修改表单字段的值。最后,我们将填充后的PDF保存到指定的输出路径。 注意,模板中的表单字段名称必须与代码中使用的名称相同。你可以使用Adobe Acrobat或类似的工具来查看和编辑PDF模板中的表单字段。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值