mirror of
https://github.com/gotenberg/gotenberg.git
synced 2026-08-14 19:32:15 +01:00
45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
package print
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/thecodingmachine/gotenberg/internal/pkg/process"
|
|
"github.com/thecodingmachine/gotenberg/internal/pkg/xerror"
|
|
"github.com/thecodingmachine/gotenberg/internal/pkg/xexec"
|
|
"github.com/thecodingmachine/gotenberg/internal/pkg/xlog"
|
|
)
|
|
|
|
type mergePrint struct {
|
|
logger xlog.Logger
|
|
fpaths []string
|
|
}
|
|
|
|
// NewMergePrint returns a Print for
|
|
// merging PDF files.
|
|
func NewMergePrint(logger xlog.Logger, fpaths []string) Print {
|
|
return mergePrint{
|
|
logger: logger,
|
|
fpaths: fpaths,
|
|
}
|
|
}
|
|
|
|
func (p mergePrint) Print(ctx context.Context, dest string, proc process.Process) error {
|
|
const op string = "print.mergePrint.Print"
|
|
p.logger.DebugfOp(op, "merging '%v'...", p.fpaths)
|
|
resolver := func() error {
|
|
var args []string
|
|
args = append(args, p.fpaths...)
|
|
args = append(args, "cat", "output", dest)
|
|
cmd, err := xexec.CommandContext(ctx, p.logger, "pdftk", args...)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
xexec.LogBeforeExecute(p.logger, cmd)
|
|
return cmd.Run()
|
|
}
|
|
if err := resolver(); err != nil {
|
|
return xerror.New(op, err)
|
|
}
|
|
return nil
|
|
}
|