求方案,自定义模版转 pdf。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
howells
V2EX    Java

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

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

    如题,现在有个需求就是要自定义模版,进行动态填充数据。然后保存为 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     Solana     2639 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 09:46 PVG 17:46 LAX 01:46 JFK 04:46
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86