Golang Stream писать с помощью gofpdf или очистить память для больших файлов - PullRequest
0 голосов
/ 29 июня 2018

У меня есть pdf-оболочка для gofpdf, которая пишет таблицы, код для записи строк выглядит следующим образом, заголовки таблицы - это другая история ...

func WriteTableRows(pdf *gofpdf.Fpdf, fontSize float64, columnSize []float64, rows [][]string) *gofpdf.Fpdf {
    pdf.SetFont("Times", "", fontSize)
    _, pageh := pdf.GetPageSize()
    marginCell := 2.
    _, _, _, mbottom := pdf.GetMargins()
    _, lineHt := pdf.GetFontSize()
    for _, row := range rows {
        curx, y := pdf.GetXY()

        x := curx
        height := splitLines(row, pdf, columnSize, lineHt, marginCell)
        y = AddAnotherPage(pdf, height, pageh, mbottom, y)

        for i, txt := range row {
            width := columnSize[i]
            pdf.Rect(x, y, width, height, "")
            pdf.MultiCell(width, lineHt+marginCell, txt, "", "", false)
            x += width
            pdf.SetXY(x, y)
        }
        pdf.SetXY(curx, y+height)
    }
    return pdf
}

Этот исходный код готовит ряд строк для записи в файл PDF, Но дело в том, что вся информация остается в памяти, и у меня есть очень большие таблицы для записи, как я могу записать то, что уже обработано, и освободить память без закрытия файла, потому что после подготовки ряда строк мне нужно прочитать другой набор и «подготовить» его снова, или, возможно, даже закрыть файл, но открыть снова, чтобы добавить следующий набор строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...