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

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

  •  
  •   howells · 87 天前 · 1507 次点击
    这是一个创建于 87 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    手动编辑 pdf 模板 , 代码中填充,模板再生成新的 pdf
    howells
        5
    howells   87 天前
    @joooooker21 这个有 licence 限制,希望有开源或者 licence 不严格的
    TesterCC
        6
    TesterCC   87 天前
    html 转 pdf
    young1lin
        7
    young1lin   87 天前
    我之前做过,两个方法,

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

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

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