求方案,自定义模版转 pdf。

2021-01-15 10:35:18 +08:00
 howells

如题,现在有个需求就是要自定义模版,进行动态填充数据。然后保存为 pdf,有什么比较通用的方案吗,我之前看到比较多的是 word 模版转 pdf,但是还是比较麻烦。

3175 次点击
所在节点    Java
32 条回复
Carbule
2021-01-15 10:39:03 +08:00
.jasper
howells
2021-01-15 10:43:27 +08:00
@Carbule 我去看看,谢谢
vindac
2021-01-15 10:44:29 +08:00
蹲一个方案。目前我们采用的就是 freemarker 和 aspose,很难搞
joooooker21
2021-01-15 10:48:41 +08:00
itextpdf

手动编辑 pdf 模板 , 代码中填充,模板再生成新的 pdf
howells
2021-01-15 10:50:35 +08:00
@joooooker21 这个有 licence 限制,希望有开源或者 licence 不严格的
TesterCC
2021-01-15 10:51:36 +08:00
html 转 pdf
young1lin
2021-01-15 11:00:10 +08:00
我之前做过,两个方法,

一是渲染成 HTML,用 Enjoy 或者 Jasper 、Thymeleaf 之类的模板引擎,渲染出来 HTML 后,发到前端,然后插入到隐藏的 div 中,用对应的 jQuery 插件转成 PDF (我就是这么干的,注意样式)。

二是就是你说的 Word 转 PDF,不过这个还是要先渲染成 HTML,发到前端渲染,再转到后端把那些样式带上的那种。发到前端的目的是要可编辑,有些内容要手动编辑,不是生成的。数据库把渲染后的 HTML 保存对应的 Blob 。所以这个方式也用了。

我两年前做的是个考试的系统,各种打印基本都是我做的。。。这个我太熟了。
alinwu05
2021-01-15 11:12:35 +08:00
数据填充 Word 模板,再转 PDF 。
Word 模板容易编辑,非开发人员也容易更改,Word 转 PDF 开源方案很多。
littleshy
2021-01-15 11:31:06 +08:00
说个我们 aspnet core 的做法:
1:后端编写 Razor 模板,传入参数渲染成 HTML 字符串;
2:调用 wkhtmltopdf 将 HTML 转成 PDF 。
RedBeanIce
2021-01-15 13:21:51 +08:00
图片转 pdf,,我管你要什么样的图片,
bluefountain
2021-01-15 13:38:42 +08:00
livecycle?
Hyseen
2021-01-15 13:40:51 +08:00
渲染成 HTML,然后用 puppeteer 转成 PDF
taosx
2021-01-15 13:44:28 +08:00
freemarker + itex
jie170601
2021-01-15 13:49:03 +08:00
wkhtmltopdf
lovesky
2021-01-15 13:57:54 +08:00
我们的系统就是 html->wkhtmltopdf->pdf->jpg
fakeJas0n
2021-01-15 14:28:17 +08:00
openhtmltopdf
stephCurry
2021-01-15 14:38:31 +08:00
```
public static byte[] createPdf(String htmlContent) throws Exception {
ITextRenderer renderer = new ITextRenderer();
renderer.getFontResolver().addFont(getFontPath(), BaseFont.IDENTITY_H, true);
renderer.setDocumentFromString(htmlContent);
renderer.layout();
ByteArrayOutputStream fos = new ByteArrayOutputStream(htmlContent.length());
renderer.createPDF(fos, false);
renderer.finishPDF();
return fos.toByteArray();
}

```
zhangweifang
2021-01-15 15:03:33 +08:00
HTML to PDF 可以使用无头浏览器,比如 puppeteer 之类的,把 HTML “打印”成 PDF 。
yazhouli01
2021-01-15 15:04:59 +08:00
kiracyan
2021-01-15 15:07:28 +08:00
以前做的是 html 转的 不知道有没有更好的方案

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/745140

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX