1
1
package pkg
2
2
3
3
import (
4
- "bytes"
5
4
"errors"
6
- "io"
7
5
"log"
8
6
7
+ "github.com/johnfercher/maroto/v2/pkg/merge"
8
+
9
9
"github.com/johnfercher/maroto/v2/pkg/core/entity"
10
10
11
11
"github.com/johnfercher/go-tree/node"
@@ -23,7 +23,6 @@ import (
23
23
"github.com/f-amaral/go-async/pool"
24
24
"github.com/johnfercher/maroto/v2/pkg/config"
25
25
"github.com/johnfercher/maroto/v2/pkg/core"
26
- "github.com/pdfcpu/pdfcpu/pkg/api"
27
26
)
28
27
29
28
type maroto struct {
@@ -37,7 +36,6 @@ type maroto struct {
37
36
rows []core.Row
38
37
header []core.Row
39
38
footer []core.Row
40
- pdfs [][]byte
41
39
headerHeight float64
42
40
footerHeight float64
43
41
currentHeight float64
@@ -148,10 +146,6 @@ func (m *maroto) GetStructure() *node.Node[core.Structure] {
148
146
return node
149
147
}
150
148
151
- func (m * maroto ) AddPDFs (pdfs ... []byte ) {
152
- m .pdfs = append (m .pdfs , pdfs ... )
153
- }
154
-
155
149
func (m * maroto ) addRows (rows ... core.Row ) {
156
150
for _ , row := range rows {
157
151
m .addRow (row )
@@ -234,24 +228,7 @@ func (m *maroto) generate() (core.Document, error) {
234
228
return nil , err
235
229
}
236
230
237
- if len (m .pdfs ) == 0 {
238
- return core .NewPDF (documentBytes , nil ), nil
239
- }
240
-
241
- readers := []io.ReadSeeker {}
242
- readers = append (readers , bytes .NewReader (documentBytes ))
243
- for _ , pdf := range m .pdfs {
244
- readers = append (readers , bytes .NewReader (pdf ))
245
- }
246
-
247
- var buf bytes.Buffer
248
- writer := io .Writer (& buf )
249
- err = mergePdfs (readers , writer )
250
- if err != nil {
251
- return nil , err
252
- }
253
-
254
- return core .NewPDF (buf .Bytes (), nil ), nil
231
+ return core .NewPDF (documentBytes , nil ), nil
255
232
}
256
233
257
234
func (m * maroto ) generateConcurrently () (core.Document , error ) {
@@ -275,24 +252,18 @@ func (m *maroto) generateConcurrently() (core.Document, error) {
275
252
log .Fatal ("error on generating pages" )
276
253
}
277
254
278
- readers := make ([]io. ReadSeeker , len (processed .Results ) + len ( m . pdfs ))
255
+ pdfs := make ([][] byte , len (processed .Results ))
279
256
for i , result := range processed .Results {
280
- b := result .Output .([]byte )
281
- readers [i ] = bytes . NewReader ( b )
257
+ bytes := result .Output .([]byte )
258
+ pdfs [i ] = bytes
282
259
}
283
260
284
- for i , pdf := range m .pdfs {
285
- readers [i + len (processed .Results )] = bytes .NewReader (pdf )
286
- }
287
-
288
- var buf bytes.Buffer
289
- writer := io .Writer (& buf )
290
- err := mergePdfs (readers , writer )
261
+ mergedBytes , err := merge .Bytes (pdfs ... )
291
262
if err != nil {
292
263
return nil , err
293
264
}
294
265
295
- return core .NewPDF (buf . Bytes () , nil ), nil
266
+ return core .NewPDF (mergedBytes , nil ), nil
296
267
}
297
268
298
269
func (m * maroto ) processPage (pages []core.Page ) ([]byte , error ) {
@@ -326,9 +297,3 @@ func getConfig(configs ...*entity.Config) *entity.Config {
326
297
func getProvider (cache cache.Cache , cfg * entity.Config ) core.Provider {
327
298
return gofpdf .New (cfg , cache )
328
299
}
329
-
330
- func mergePdfs (readers []io.ReadSeeker , writer io.Writer ) error {
331
- conf := api .LoadConfiguration ()
332
- conf .WriteXRefStream = false
333
- return api .MergeRaw (readers , writer , conf )
334
- }
0 commit comments