登录
首页 >  Golang >  Go问答

Unipdf pdf创建 - 跨页表格行显示问题

来源:stackoverflow

时间:2024-03-07 14:54:26 472浏览 收藏

学习Golang要努力,但是不要急!今天的这篇文章《Unipdf pdf创建 - 跨页表格行显示问题》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

问题内容

我正在使用 unidoc 的 unipdf 库生成一个包含多个表格的 pdf。

当表格单元格中的内容很大并且需要跨越多个页面时,生成的pdf会将行中的单元格打乱,每个单元格都会转到新页面,并且具有大量数据的单元格中不会显示任何数据。

在同一场景中,有时我会看到该进程挂起并开始消耗大量内存。

以下是相同的屏幕截图:

page1/cell1 - 单元格跨越整个页面,但只有一行

page2/cell2 - 具有实际的巨大数据,但没有显示数据

page3/cell3 - 单元格跨越整个页面,但只有一行

执行上述操作的代码片段:

func addtablecell(c *ctx.context, t *creator.table, parag *creator.paragraph, colspan int, width float64, sides ...creator.cellborderside) {
  cell := t.multicolcell(colspan)
  for _, s := range sides {
    cell.setborder(s, creator.cellborderstylesingle, width)
  }
  cell.sethorizontalalignment(creator.cellhorizontalalignmentleft)
  cell.setverticalalignment(creator.cellverticalalignmentmiddle)

  err := cell.setcontent(parag)
  c.noerror(err, "error setting cell content: %v", err)
}

func newparagraph(c *creator.creator, text string, font *pdfmodel.pdffont, fontsize, lineheight float64) *creator.paragraph {
    parag := c.newparagraph(text)
    parag.setfont(font)
    parag.setfontsize(fontsize)
    parag.setcolor(reporttextcolor)
    parag.setlineheight(lineheight)
    parag.setenablewrap(true)
    return parag
}

这是我的两个函数,可以帮助我绘制表格

以下是我如何使用它们:

for col := 0; col < len(rowVals); col++ {
    if col == 0 {
        AddTableCell(g.c, tb.Table, NewParagraph(g.Creator, rowVals[col], font, 10, 1.5),
            colSpans[col], tb.cellBorderWidth, creator.CellBorderSideAll)
    } else {
        AddTableCell(g.c, tb.Table, NewParagraph(g.Creator, rowVals[col], font, 10, 1.5),
            colSpans[col], tb.cellBorderWidth, creator.CellBorderSideTop, creator.CellBorderSideRight, creator.CellBorderSideBottom)
    }
    if g.c.HasErr() {
        return
    }
}

使用相同的逻辑,我可以为较小的数据生成 pdf,但当数据很大时,它会中断,如上面的屏幕截图所示。

unidoc 是否支持在嵌入表中时处理跨多个页面的数据?或者它有一些选项/标志来启用它吗?我在这里缺少什么?


解决方案


您可以使用的另一种方法是

  1. 创建 GO HTML template 并渲染它。
  2. 使用 wkhtmltopdf 将 html 转换为 pdf。

我也遇到了类似的问题,我无法生成复杂的 pdf,但使用 wkhtmltopdf 我能够生成它。

ps:您可以使用pdfg.AddPage添加新页面。

终于介绍完啦!小伙伴们,这篇关于《Unipdf pdf创建 - 跨页表格行显示问题》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>