From 222cf6c2dd89d9c70565f170fb57079b77c21e27 Mon Sep 17 00:00:00 2001 From: Horst Rutter Date: Thu, 1 Feb 2024 11:02:58 +0100 Subject: [PATCH] Fix #796 --- pkg/pdfcpu/annotation.go | 10 +++++++++- pkg/pdfcpu/validate/structTree.go | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/pkg/pdfcpu/annotation.go b/pkg/pdfcpu/annotation.go index cd25325c9..05b2aaab5 100644 --- a/pkg/pdfcpu/annotation.go +++ b/pkg/pdfcpu/annotation.go @@ -494,7 +494,7 @@ func removeAllAnnotations( return false, err } objNr := ir.ObjectNumber.Value() - if err := ctx.DeleteObject(ir); err != nil { + if err = ctx.FreeObject(objNr); err != nil { return false, err } if incr { @@ -502,6 +502,7 @@ func removeAllAnnotations( ctx.Write.IncrementWithObjNr(objNr) } } + annots, _ := obj.(types.Array) for _, o := range annots { @@ -930,5 +931,12 @@ func RemoveAnnotations(ctx *model.Context, selectedPages types.IntSet, idsAndTyp } } + if removeAll { + // Hacky, actually we only want to remove struct tree elements using removed annotations + // but this is most probably what we want anyway. + root, _ := ctx.Catalog() + root.Delete("StructTreeRoot") + } + return removed, nil } diff --git a/pkg/pdfcpu/validate/structTree.go b/pkg/pdfcpu/validate/structTree.go index febd3c8b9..a3a69b589 100644 --- a/pkg/pdfcpu/validate/structTree.go +++ b/pkg/pdfcpu/validate/structTree.go @@ -90,7 +90,7 @@ func validateObjectReferenceDict(xRefTable *model.XRefTable, d types.Dict) error } if obj == nil { - return errors.New("pdfcpu: validateObjectReferenceDict: missing required entry \"Obj\"") + return errors.Errorf("pdfcpu: validateObjectReferenceDict: missing obj#%s", ir.ObjectNumber) } return nil