Skip to content

Commit

Permalink
feat(libreoffice): add exportNotesInMargin form field (#904)
Browse files Browse the repository at this point in the history
* ExportNotesInMargin allows to export comments in margin

https://help.libreoffice.org/latest/en-US/text/shared/guide/pdf_params.html

* Resolve requested changes

Move ExportNotesInMargin above LosslessImageCompression
Remove overhead ExportNotes=true
  • Loading branch information
maniack committed Jun 17, 2024
1 parent 697fa08 commit d6fe895
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 0 deletions.
4 changes: 4 additions & 0 deletions pkg/modules/libreoffice/api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@ type Options struct {
// Optional
SinglePageSheets bool

// ExportNotesInMargin allows to export comments in margin.
// Optional
ExportNotesInMargin bool

// LosslessImageCompression allows turning lossless compression on or off
// to tweak image conversion performance.
// Optional
Expand Down
4 changes: 4 additions & 0 deletions pkg/modules/libreoffice/api/libreoffice.go
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,10 @@ func (p *libreOfficeProcess) pdf(ctx context.Context, logger *zap.Logger, inputP
args = append(args, "--export", "SinglePageSheets=true")
}

if options.ExportNotesInMargin {
args = append(args, "--export", "ExportNotesInMargin=true")
}

if options.LosslessImageCompression {
args = append(args, "--export", "UseLosslessCompression=true")
}
Expand Down
29 changes: 29 additions & 0 deletions pkg/modules/libreoffice/api/libreoffice_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -451,6 +451,35 @@ func TestLibreOfficeProcess_pdf(t *testing.T) {
start: true,
expectError: false,
},
{
scenario: "success ExportNotesInMargin",
libreOffice: newLibreOfficeProcess(
libreOfficeArguments{
binPath: os.Getenv("LIBREOFFICE_BIN_PATH"),
unoBinPath: os.Getenv("UNOCONVERTER_BIN_PATH"),
startTimeout: 5 * time.Second,
},
),
fs: func() *gotenberg.FileSystem {
fs := gotenberg.NewFileSystem()

err := os.MkdirAll(fs.WorkingDirPath(), 0o755)
if err != nil {
t.Fatalf(fmt.Sprintf("expected no error but got: %v", err))
}

err = os.WriteFile(fmt.Sprintf("%s/document.txt", fs.WorkingDirPath()), []byte("ExportNotesInMargin"), 0o755)
if err != nil {
t.Fatalf("expected no error but got: %v", err)
}

return fs
}(),
options: Options{ExportNotesInMargin: true},
cancelledCtx: false,
start: true,
expectError: false,
},
{
scenario: "success LosslessImageCompression",
libreOffice: newLibreOfficeProcess(
Expand Down
3 changes: 3 additions & 0 deletions pkg/modules/libreoffice/routes.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ func convertRoute(libreOffice libreofficeapi.Uno, engine gotenberg.PdfEngine) ap
nativePageRanges string
exportFormFields bool
singlePageSheets bool
exportNotesInMargin bool
losslessImageCompression bool
reduceImageResolution bool
pdfa string
Expand All @@ -45,6 +46,7 @@ func convertRoute(libreOffice libreofficeapi.Uno, engine gotenberg.PdfEngine) ap
String("nativePageRanges", &nativePageRanges, "").
Bool("exportFormFields", &exportFormFields, true).
Bool("singlePageSheets", &singlePageSheets, false).
Bool("exportNotesInMargin", &exportNotesInMargin, false).
Bool("losslessImageCompression", &losslessImageCompression, false).
Bool("reduceImageResolution", &reduceImageResolution, true).
String("pdfa", &pdfa, "").
Expand Down Expand Up @@ -79,6 +81,7 @@ func convertRoute(libreOffice libreofficeapi.Uno, engine gotenberg.PdfEngine) ap
PageRanges: nativePageRanges,
ExportFormFields: exportFormFields,
SinglePageSheets: singlePageSheets,
ExportNotesInMargin: exportNotesInMargin,
LosslessImageCompression: losslessImageCompression,
ReduceImageResolution: reduceImageResolution,
}
Expand Down

0 comments on commit d6fe895

Please sign in to comment.