V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
howells
V2EX  ›  Java

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

  •  
  •   howells · 2021-01-15 10:35:18 +08:00 · 3215 次点击
    这是一个创建于 1435 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    32 条回复    2021-01-23 09:05:10 +08:00
    Carbule
        1
    Carbule  
       2021-01-15 10:39:03 +08:00
    .jasper
    howells
        2
    howells  
    OP
       2021-01-15 10:43:27 +08:00
    @Carbule 我去看看,谢谢
    vindac
        3
    vindac  
       2021-01-15 10:44:29 +08:00
    蹲一个方案。目前我们采用的就是 freemarker 和 aspose,很难搞
    joooooker21
        4
    joooooker21  
       2021-01-15 10:48:41 +08:00
    itextpdf

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

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

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

    我两年前做的是个考试的系统,各种打印基本都是我做的。。。这个我太熟了。
    alinwu05
        8
    alinwu05  
       2021-01-15 11:12:35 +08:00
    数据填充 Word 模板,再转 PDF 。
    Word 模板容易编辑,非开发人员也容易更改,Word 转 PDF 开源方案很多。
    littleshy
        9
    littleshy  
       2021-01-15 11:31:06 +08:00
    说个我们 aspnet core 的做法:
    1:后端编写 Razor 模板,传入参数渲染成 HTML 字符串;
    2:调用 wkhtmltopdf 将 HTML 转成 PDF 。
    RedBeanIce
        10
    RedBeanIce  
       2021-01-15 13:21:51 +08:00 via iPhone
    图片转 pdf,,我管你要什么样的图片,
    bluefountain
        11
    bluefountain  
       2021-01-15 13:38:42 +08:00
    livecycle?
    Hyseen
        12
    Hyseen  
       2021-01-15 13:40:51 +08:00
    渲染成 HTML,然后用 puppeteer 转成 PDF
    taosx
        13
    taosx  
       2021-01-15 13:44:28 +08:00
    freemarker + itex
    jie170601
        14
    jie170601  
       2021-01-15 13:49:03 +08:00
    wkhtmltopdf
    lovesky
        15
    lovesky  
       2021-01-15 13:57:54 +08:00
    我们的系统就是 html->wkhtmltopdf->pdf->jpg
    fakeJas0n
        16
    fakeJas0n  
       2021-01-15 14:28:17 +08:00
    openhtmltopdf
    stephCurry
        17
    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
        18
    zhangweifang  
       2021-01-15 15:03:33 +08:00
    HTML to PDF 可以使用无头浏览器,比如 puppeteer 之类的,把 HTML “打印”成 PDF 。
    yazhouli01
        19
    yazhouli01  
       2021-01-15 15:04:59 +08:00
    kiracyan
        20
    kiracyan  
       2021-01-15 15:07:28 +08:00
    以前做的是 html 转的 不知道有没有更好的方案
    wzxlovesy
        21
    wzxlovesy  
       2021-01-15 15:10:59 +08:00 via Android
    pandoc?
    liudaolunhuibl
        22
    liudaolunhuibl  
       2021-01-15 16:39:30 +08:00
    asponse
    nobody123
        23
    nobody123  
       2021-01-15 16:55:31 +08:00
    Ghostscript
    jk1030
        24
    jk1030  
       2021-01-15 17:23:44 +08:00
    我记得做过一个,因为项目的关系用不了 freemarker html 被否了 最后用的截图后填充
    vcode
        25
    vcode  
       2021-01-15 18:28:02 +08:00
    itextpdf
    cmai
        26
    cmai  
       2021-01-15 18:31:00 +08:00
    freemarker+itextpdf
    cmai
        27
    cmai  
       2021-01-15 18:32:08 +08:00
    用 HTML+freemarker 当模板,填充动态数据,然后 itextpdf 转成 pdf 文件
    TinyKube
        28
    TinyKube  
       2021-01-15 18:32:41 +08:00 via iPhone
    类似的需求直接用 tinymce 编辑模板,填充后直接网页打印,要存 pdf 用户自行选择
    MicroBotter
        29
    MicroBotter  
       2021-01-16 02:42:32 +08:00
    Latex ⇒ PDF?
    ccraohng
        30
    ccraohng  
       2021-01-16 09:07:56 +08:00 via iPhone
    html 渲染 wkhtml 。puppeteer,前端有分页问题。
    XuHuan1025
        31
    XuHuan1025  
       2021-01-19 17:28:53 +08:00
    itet<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.10</version>
    </dependency>
    刚刚写完 就是 map 填充
    DreamSaddle
        32
    DreamSaddle  
       2021-01-23 09:05:10 +08:00 via iPhone
    freemarker 或是 thymeleaf 渲染👌html 厚用 puppeteer 无头模式转。
    目前我遇到的效果最好的方案,其余免费方案基本都有暇疵
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2072 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:41 · PVG 08:41 · LAX 16:41 · JFK 19:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.