Skip to content

Commit

Permalink
8.9.0 (#33)
Browse files Browse the repository at this point in the history
* feat: add flatten route

* chore: update client compatibility table

---------

Co-authored-by: Alexander Pikeev <[email protected]>
  • Loading branch information
starwalkn and Alexander Pikeev authored Jan 30, 2025
1 parent 9af1236 commit b65e466
Show file tree
Hide file tree
Showing 9 changed files with 97 additions and 9 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

|Gotenberg version | Client version |
|:----------------:|:----------------------------------------------------------------------------------------------------------:|
|`8.x` **(actual)**| `8.8.1` **(actual)** <br/> |
|`8.x` **(actual)**| `8.9.0` **(actual)** <br/> |
|`7.x` | `<= 8.5.0` |
|`6.x` | <a href="https://github.com/thecodingmachine/gotenberg-go-client">thecodingmachine/gotenberg-go-client</a> |

Expand Down
13 changes: 8 additions & 5 deletions fields.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,18 +83,21 @@ const (
fieldOfficeMerge formField = "merge"
fieldOfficePdfA formField = "pdfa"
fieldOfficePdfUa formField = "pdfua"
fieldOfficeFlatten formField = "flatten"
)

// Merge request property.
const (
fieldMergePdfA formField = "pdfa"
fieldMergePdfUA formField = "pdfua"
fieldMergePdfA formField = "pdfa"
fieldMergePdfUA formField = "pdfua"
fieldMergeFlatten formField = "flatten"
)

const (
fieldSplitMode = "splitMode"
fieldSplitSpan = "splitSpan"
fieldSplitUnify = "splitUnify"
fieldSplitMode = "splitMode"
fieldSplitSpan = "splitSpan"
fieldSplitUnify = "splitUnify"
fieldSplitFlatten = "flatten"
)

// Split mode.
Expand Down
30 changes: 30 additions & 0 deletions flatten.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package gotenberg

import "github.com/starwalkn/gotenberg-go-client/v8/document"

type FlattenRequest struct {
pdfs []document.Document

*baseRequest
}

func NewFlattenRequest(pdfs ...document.Document) *FlattenRequest {
return &FlattenRequest{
pdfs: pdfs,
baseRequest: newBaseRequest(),
}
}

func (req *FlattenRequest) endpoint() string {
return "/forms/pdfengines/flatten"
}

func (req *FlattenRequest) formDocuments() map[string]document.Document {
files := make(map[string]document.Document)

for _, pdf := range req.pdfs {
files[pdf.Filename()] = pdf
}

return files
}
37 changes: 37 additions & 0 deletions flatten_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package gotenberg

import (
"context"
"fmt"
"net/http"
"testing"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

"github.com/starwalkn/gotenberg-go-client/v8/document"
"github.com/starwalkn/gotenberg-go-client/v8/test"
)

func TestFlatten(t *testing.T) {
c, err := NewClient("http://localhost:3000", http.DefaultClient)
require.NoError(t, err)

doc, err := document.FromPath("gotenberg1.pdf", test.PDFTestFilePath(t, "gotenberg.pdf"))
require.NoError(t, err)

r := NewFlattenRequest(doc)
r.Trace("testFlatten")
r.UseBasicAuth("foo", "bar")

dirPath := t.TempDir()
dest := fmt.Sprintf("%s/foo.pdf", dirPath)

err = c.Store(context.Background(), r, dest)
require.NoError(t, err)
assert.FileExists(t, dest)

isPDF, err := test.IsPDF(dest)
require.NoError(t, err)
assert.True(t, isPDF)
}
5 changes: 5 additions & 0 deletions libreoffice.go
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,11 @@ func (req *LibreOfficeRequest) SplitPages(span string, unify bool) {
req.fields[fieldSplitUnify] = strconv.FormatBool(unify)
}

// Flatten defines whether the resulting PDF should be flattened.
func (req *LibreOfficeRequest) Flatten(val bool) {
req.fields[fieldOfficeFlatten] = strconv.FormatBool(val)
}

// Merge merges the resulting PDFs.
func (req *LibreOfficeRequest) Merge() {
req.fields[fieldOfficeMerge] = strconv.FormatBool(true)
Expand Down
9 changes: 6 additions & 3 deletions pdfengines.go → merge.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ import (
"github.com/starwalkn/gotenberg-go-client/v8/document"
)

const endpointMerge = "/forms/pdfengines/merge"

// MergeRequest facilitates work with PDF files with the Gotenberg API.
type MergeRequest struct {
pdfs []document.Document
Expand All @@ -20,7 +18,7 @@ func NewMergeRequest(pdfs ...document.Document) *MergeRequest {
}

func (req *MergeRequest) endpoint() string {
return endpointMerge
return "/forms/pdfengines/merge"
}

func (req *MergeRequest) formDocuments() map[string]document.Document {
Expand Down Expand Up @@ -48,6 +46,11 @@ func (req *MergeRequest) Metadata(md []byte) {
req.fields[fieldMetadata] = string(md)
}

// Flatten defines whether the resulting PDF should be flattened.
func (req *MergeRequest) Flatten(val bool) {
req.fields[fieldMergeFlatten] = strconv.FormatBool(val)
}

// Compile-time checks to ensure type implements desired interfaces.
var (
_ = multipartRequester(new(MergeRequest))
Expand Down
File renamed without changes.
5 changes: 5 additions & 0 deletions split_intervals.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,8 @@ func (req *SplitIntervalsRequest) formDocuments() map[string]document.Document {
func (req *SplitIntervalsRequest) SplitSpan(span int) {
req.fields[fieldSplitSpan] = strconv.Itoa(span)
}

// Flatten defines whether the resulting PDF should be flattened.
func (req *SplitIntervalsRequest) Flatten(val bool) {
req.fields[fieldSplitFlatten] = strconv.FormatBool(val)
}
5 changes: 5 additions & 0 deletions split_pages.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,8 @@ func (req *SplitPagesRequest) SplitSpan(span string) {
func (req *SplitPagesRequest) SplitUnify(val bool) {
req.fields[fieldSplitUnify] = strconv.FormatBool(val)
}

// Flatten defines whether the resulting PDF should be flattened.
func (req *SplitPagesRequest) Flatten(val bool) {
req.fields[fieldSplitFlatten] = strconv.FormatBool(val)
}

0 comments on commit b65e466

Please sign in to comment.