From f1cd0115fd39efa4fed5198ec248deac2e9b6847 Mon Sep 17 00:00:00 2001 From: Jason Alan Palmer Date: Sat, 24 Dec 2022 16:45:27 -0700 Subject: [PATCH] Add a poppler_version function --- pdftotext.cpp | 19 ++++++++++++++++--- tests/test_pdftotext.py | 13 +++++++++++++ 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/pdftotext.cpp b/pdftotext.cpp index e0de6af..c9cda3b 100644 --- a/pdftotext.cpp +++ b/pdftotext.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include @@ -244,10 +245,22 @@ static PyTypeObject PDFType = { static void do_nothing(const std::string&, void*) {} +static PyObject* poppler_version(PyObject* self, PyObject* args) { + return PyUnicode_FromString(poppler::version_string().c_str()); +} + +static PyMethodDef Methods[] = { + { + "poppler_version", + poppler_version, + METH_NOARGS, + "Get the version of the poppler library in use.", + }, + {NULL, NULL, 0, NULL}, // sentinel +}; + static PyModuleDef pdftotextmodule = { - PyModuleDef_HEAD_INIT, - "pdftotext", - "Simple PDF text extraction.", + PyModuleDef_HEAD_INIT, "pdftotext", "Simple PDF text extraction.", -1, Methods, }; PyMODINIT_FUNC PyInit_pdftotext() { diff --git a/tests/test_pdftotext.py b/tests/test_pdftotext.py index 66c994d..f910b8f 100644 --- a/tests/test_pdftotext.py +++ b/tests/test_pdftotext.py @@ -2,6 +2,7 @@ import io import pkg_resources +import subprocess import unittest import pdftotext @@ -271,3 +272,15 @@ def test_raw_vs_physical(self): pdf_raw = pdftotext.PDF(get_file(filename), raw=True) pdf_physical = pdftotext.PDF(get_file(filename), physical=True) self.assertNotEqual(pdf_raw[0], pdf_physical[0]) + + +class VersionTest(unittest.TestCase): + """Test the poppler_version function.""" + + def test_poppler_version(self): + poppler_version = ( + subprocess.check_output(["pkg-config", "--modversion", "poppler-cpp"]) + .decode() + .strip() + ) + self.assertEqual(pdftotext.poppler_version(), poppler_version)