[poppler] glib/poppler-document.cc glib/poppler-document.h glib/reference

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jan 26 10:05:25 UTC 2022


 glib/poppler-document.cc            |   32 ++++++++++++++++++++++++++++++--
 glib/poppler-document.h             |    4 +++-
 glib/reference/poppler-sections.txt |    1 +
 3 files changed, 34 insertions(+), 3 deletions(-)

New commits:
commit 2ac091c8c1fefe21caf1c2d032c57f90c6674844
Author: Marek Kasik <mkasik at redhat.com>
Date:   Tue Jan 25 15:58:05 2022 +0100

    glib: New method for getting all signature fields
    
    This commit adds new method poppler_document_get_signature_fields()
    which returns GList of all signature fields for the document.
    This is needed as some documents have signature fields which are not
    associated to any page and hence are unaccessible now.

diff --git a/glib/poppler-document.cc b/glib/poppler-document.cc
index 7c275454..787d05d8 100644
--- a/glib/poppler-document.cc
+++ b/glib/poppler-document.cc
@@ -2,12 +2,11 @@
  * Copyright (C) 2005, Red Hat, Inc.
  *
  * Copyright (C) 2016 Jakub Alba <jakubalba at gmail.com>
- * Copyright (C) 2018-2019 Marek Kasik <mkasik at redhat.com>
+ * Copyright (C) 2018, 2019, 2021, 2022 Marek Kasik <mkasik at redhat.com>
  * Copyright (C) 2019 Masamichi Hosoda <trueroad at trueroad.jp>
  * Copyright (C) 2019, 2021 Oliver Sander <oliver.sander at tu-dresden.de>
  * Copyright (C) 2020 Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2021 André Guerreiro <aguerreiro1985 at gmail.com>
- * Copyright (C) 2021 Marek Kasik <mkasik at redhat.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -1787,6 +1786,35 @@ gint poppler_document_get_n_signatures(const PopplerDocument *document)
     return document->doc->getNumSignatureFields();
 }
 
+/**
+ * poppler_document_get_signature_fields:
+ * @document: A #PopplerDocument
+ *
+ * Returns a #GList containing all signature #PopplerFormField<!-- -->s in the document.
+ *
+ * Return value: (element-type PopplerFormField) (transfer full): a list of all signature form fields.
+ *
+ * Since: 22.02.0
+ **/
+GList *poppler_document_get_signature_fields(PopplerDocument *document)
+{
+    std::vector<FormFieldSignature *> signature_fields;
+    FormWidget *widget;
+    GList *result = nullptr;
+    gsize i;
+
+    signature_fields = document->doc->getSignatureFields();
+
+    for (i = 0; i < signature_fields.size(); i++) {
+        widget = signature_fields[i]->getCreateWidget();
+
+        if (widget != nullptr)
+            result = g_list_prepend(result, _poppler_form_field_new(document, widget));
+    }
+
+    return g_list_reverse(result);
+}
+
 /**
  * poppler_document_get_page_layout:
  * @document: A #PopplerDocument
diff --git a/glib/poppler-document.h b/glib/poppler-document.h
index 595c2de7..3dabfa2f 100644
--- a/glib/poppler-document.h
+++ b/glib/poppler-document.h
@@ -2,7 +2,7 @@
  * Copyright (C) 2004, Red Hat, Inc.
  *
  * Copyright (C) 2016 Jakub Alba <jakubalba at gmail.com>
- * Copyright (C) 2018, 2019, 2021 Marek Kasik <mkasik at redhat.com>
+ * Copyright (C) 2018, 2019, 2021, 2022 Marek Kasik <mkasik at redhat.com>
  * Copyright (C) 2019 Masamichi Hosoda <trueroad at trueroad.jp>
  * Copyright (C) 2021 André Guerreiro <aguerreiro1985 at gmail.com>
  *
@@ -419,6 +419,8 @@ gboolean poppler_document_has_javascript(PopplerDocument *document);
 
 /* Signatures */
 POPPLER_PUBLIC
+GList *poppler_document_get_signature_fields(PopplerDocument *document);
+POPPLER_PUBLIC
 gint poppler_document_get_n_signatures(const PopplerDocument *document);
 
 /* Interface for getting the Index of a poppler_document */
diff --git a/glib/reference/poppler-sections.txt b/glib/reference/poppler-sections.txt
index ac542e78..0a20ffae 100644
--- a/glib/reference/poppler-sections.txt
+++ b/glib/reference/poppler-sections.txt
@@ -190,6 +190,7 @@ poppler_document_get_print_n_copies
 poppler_document_get_print_page_ranges
 poppler_document_get_print_scaling
 poppler_document_get_producer
+poppler_document_get_signature_fields
 poppler_document_get_subject
 poppler_document_get_title
 poppler_document_has_attachments


More information about the poppler mailing list