From 17fb6add26291b31f7020e3551a7c8487130a747 Mon Sep 17 00:00:00 2001 From: "F.O." Date: Sun, 16 Feb 2025 17:56:08 +0100 Subject: genesi --- go-poppler/tags.go | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 go-poppler/tags.go (limited to 'go-poppler/tags.go') diff --git a/go-poppler/tags.go b/go-poppler/tags.go new file mode 100644 index 0000000..fd24f70 --- /dev/null +++ b/go-poppler/tags.go @@ -0,0 +1,57 @@ +package poppler + +// #cgo pkg-config: poppler-glib +// #include +// #include +// #include +// #include +import "C" +import "strings" + + + +var zeroRect = Rectangle{X1: 0, X2: 0, Y1: 0, Y2: 0} + +func (d *Document) Tag(text string){ + am := C.poppler_annot_mapping_new(); + + pRect := rectangleToPopplerRectangle(zeroRect) + + annot := Annot { + am: am, + } + defer annot.Close() + + am.annot = C.poppler_annot_text_new(d.doc, &pRect) + annot.SetContents(text) + annot.SetFlags(AnnotFlagHidden | AnnotFlagInvisible) + + zeroPage := d.GetPage(0) + zeroPage.AddAnnot(annot) + defer zeroPage.Close() +} + + +func (d *Document) GetTags(filter string) []*Annot { + page := d.GetPage(0) + //defer page.Close() + + annots := page.GetAnnots() + var tags []*Annot + for _, a := range(annots) { + if a.Type() == AnnotText && + rectEq(a.Rect(), zeroRect) && + a.Flags() & AnnotFlagHidden != 0 && + a.Flags() & AnnotFlagInvisible != 0 && + strings.HasPrefix(a.Contents(), filter){ + tags = append(tags, a) + } + } + + return tags +} + +func (d *Document) RemoveTags(filter string){ +// d.GetPage(0).AddAnnot(annot) + // TODO +} -- cgit v1.2.3