Control: tags 1142706 + pending

Dear maintainer,

I've prepared an NMU for pdf2djvu (versioned as 0.9.18.2-2.3) and
uploaded it to DELAYED/2. Please feel free to tell me if I
should cancel it.

Regards,
Nadzeya

diffstat for pdf2djvu-0.9.18.2 pdf2djvu-0.9.18.2

 changelog                                  |    7 +
 patches/fix-ftbfs-with-poppler-26.07.patch |  154 +++++++++++++++++++++++++++++
 patches/series                             |    1 
 3 files changed, 162 insertions(+)

diff -Nru pdf2djvu-0.9.18.2/debian/changelog pdf2djvu-0.9.18.2/debian/changelog
--- pdf2djvu-0.9.18.2/debian/changelog	2026-05-03 00:57:21.000000000 +0200
+++ pdf2djvu-0.9.18.2/debian/changelog	2026-08-14 15:25:59.000000000 +0200
@@ -1,3 +1,10 @@
+pdf2djvu (0.9.18.2-2.3) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Fix FTBFS with poppler 26.07 (Closes: #1142706)
+
+ -- Nadzeya Hutsko <[email protected]>  Fri, 14 Aug 2026 15:25:59 +0200
+
 pdf2djvu (0.9.18.2-2.2) unstable; urgency=medium
 
   * Non-maintainer upload
diff -Nru pdf2djvu-0.9.18.2/debian/patches/fix-ftbfs-with-poppler-26.07.patch pdf2djvu-0.9.18.2/debian/patches/fix-ftbfs-with-poppler-26.07.patch
--- pdf2djvu-0.9.18.2/debian/patches/fix-ftbfs-with-poppler-26.07.patch	1970-01-01 01:00:00.000000000 +0100
+++ pdf2djvu-0.9.18.2/debian/patches/fix-ftbfs-with-poppler-26.07.patch	2026-08-14 14:56:08.000000000 +0200
@@ -0,0 +1,154 @@
+Description: Fix FTBFS with poppler >= 26.02
+ Several poppler API changes across the 26.02-26.07 releases break the
+ build:
+ - 26.02 dropped the SplashOutputDev reverseVideo parameter, made
+   GfxState::getCTM() return a const std::array<double, 6>& and made
+   SplashFont::getGlyph() take the clip by const SplashClip&
+ - 26.04 made Object::getString() return a const std::string&
+ - 26.05 removed the SplashCoord alias to double
+ - 26.06 made GfxColorSpace::getRGB() take a const GfxColor& and
+   Annot::getColor() return a const AnnotColor*
+ - 26.07 made Catalog::indexToLabel() take a std::string*
+ Each change is guarded by the existing integer POPPLER_VERSION check,
+ so older poppler still builds
+Author: Nadzeya Hutsko <[email protected]>
+Bug-Ubuntu: https://bugs.launchpad.net/bugs/2161719
+Forwarded: no
+Last-Update: 2026-07-24
+--- a/pdf-backend.cc
++++ b/pdf-backend.cc
+@@ -164,7 +164,12 @@
+   pdf::gfx::RgbColor rgb_cc;
+   for (int i = 0; i < 4; i++)
+     cmyk_cc.c[i] = pdf::gfx::double_as_color_component(cmyk[i]);
++#if POPPLER_VERSION >= 260600
++  // poppler 26.06 changed getRGB() to take a const GfxColor &
++  cmyk_space.getRGB(cmyk_cc, &rgb_cc);
++#else
+   cmyk_space.getRGB(&cmyk_cc, &rgb_cc);
++#endif
+   rgb[0] = pdf::gfx::color_component_as_double(rgb_cc.r);
+   rgb[1] = pdf::gfx::color_component_as_double(rgb_cc.g);
+   rgb[2] = pdf::gfx::color_component_as_double(rgb_cc.b);
+@@ -176,7 +181,12 @@
+   std::string border_color;
+   if (annotation->getType() != pdf::ant::Annotation::typeLink)
+     return true;
++#if POPPLER_VERSION >= 260600
++  // poppler 26.06 made Annot::getColor() return a const AnnotColor *
++  const pdf::ant::Color *color = annotation->getColor();
++#else
+   pdf::ant::Color *color = annotation->getColor();
++#endif
+   if (color == nullptr)
+   {
+     border_colors.push_back("");
+@@ -411,7 +421,12 @@
+     char tzs = 0; int tzh = 0, tzm = 0;
+     if (!pdf::dict_lookup(info_dict, field.first, &object)->isString())
+       continue;
++#if POPPLER_VERSION >= 260400
++    // poppler 26.04 made Object::getString() return a const std::string &
++    const char *input = object.getString().c_str();
++#else
+     const char *input = pdf::get_c_string(object.getString());
++#endif
+     if (input[0] == 'D' && input[1] == ':')
+       input += 2;
+     int year = scan_date_digits(input, 4);
+@@ -474,7 +489,12 @@
+ bool pdf::Environment::antialias = false;
+ 
+ pdf::Renderer::Renderer(pdf::splash::Color &paper_color, bool monochrome)
++#if POPPLER_VERSION >= 260200
++// poppler 26.02 dropped the reverseVideo parameter
++: pdf::splash::OutputDevice(monochrome ? splashModeMono1 : splashModeRGB8, 4, paper_color)
++#else
+ : pdf::splash::OutputDevice(monochrome ? splashModeMono1 : splashModeRGB8, 4, false, paper_color)
++#endif
+ {
+   this->setFontAntialias(pdf::Environment::antialias);
+   this->setVectorAntialias(pdf::Environment::antialias);
+@@ -503,7 +523,10 @@
+     return false;
+   splash::ClipResult clip_result;
+   if (!font->getGlyph(code, 0, 0, bitmap, static_cast<int>(x), static_cast<int>(y),
+-#if POPPLER_VERSION >= 260100
++#if POPPLER_VERSION >= 260200
++      // poppler 26.02 made getGlyph() take the clip by const SplashClip &
++      splash->getClip(),
++#elif POPPLER_VERSION >= 260100
+       const_cast<SplashClip*>(&splash->getClip()),
+ #else
+       splash->getClip(),
+--- a/pdf-backend.hh
++++ b/pdf-backend.hh
+@@ -63,7 +63,12 @@
+     typedef ::Splash Splash;
+     typedef ::SplashColor Color;
+     typedef ::SplashFont Font;
++#if POPPLER_VERSION >= 260500
++    // poppler 26.05 removed the SplashCoord alias to double
++    typedef double Coord;
++#else
+     typedef ::SplashCoord Coord;
++#endif
+     typedef ::SplashPath Path;
+     typedef ::SplashGlyphBitmap GlyphBitmap;
+     typedef ::SplashBitmap Bitmap;
+--- a/pdf-document-map.cc
++++ b/pdf-document-map.cc
+@@ -41,11 +41,21 @@
+             std::unique_ptr<pdf::Document> doc(new pdf::Document(path));
+             pdf::Catalog *catalog = doc->getCatalog();
+             for (int i = 0; i < doc->getNumPages(); i++) {
++#if POPPLER_VERSION >= 260700
++                // poppler 26.07 made Catalog::indexToLabel take a std::string *
++                std::string s;
++                if (catalog->indexToLabel(i, &s)) {
++                    pdf::String gs(s);
++                    std::string str = pdf::string_as_utf8(&gs);
++                    this->labels.push_back(str);
++                }
++#else
+                 pdf::String s;
+                 if (catalog->indexToLabel(i, &s)) {
+                     std::string str = pdf::string_as_utf8(&s);
+                     this->labels.push_back(str);
+                 }
++#endif
+                 else
+                     this->labels.push_back("");
+                 global_index++;
+--- a/pdf-dpi.cc
++++ b/pdf-dpi.cc
+@@ -91,7 +91,12 @@
+ 
+ void DpiGuessDevice::process_image(pdf::gfx::State *state, int width, int height)
+ {
++#if POPPLER_VERSION >= 260200
++  // poppler 26.02 made getCTM() return a const std::array<double, 6> &
++  const double *ctm = state->getCTM().data();
++#else
+   const double *ctm = state->getCTM();
++#endif
+   double h_dpi = 72.0 * width / hypot(ctm[0], ctm[1]);
+   double v_dpi = 72.0 * height / hypot(ctm[2], ctm[3]);
+   this->min_ = std::min(this->min_, std::min(h_dpi, v_dpi));
+--- a/pdf-unicode.cc
++++ b/pdf-unicode.cc
+@@ -117,7 +117,13 @@
+ 
+ std::string pdf::string_as_utf8(pdf::Object &object)
+ {
++#if POPPLER_VERSION >= 260400
++    // poppler 26.04 made Object::getString() return a const std::string &
++    pdf::String s(object.getString());
++    return pdf::string_as_utf8(&s);
++#else
+     return pdf::string_as_utf8(object.getString());
++#endif
+ }
+ 
+ /* class pdf::FullNFKC
+
diff -Nru pdf2djvu-0.9.18.2/debian/patches/series pdf2djvu-0.9.18.2/debian/patches/series
--- pdf2djvu-0.9.18.2/debian/patches/series	2026-05-03 00:57:21.000000000 +0200
+++ pdf2djvu-0.9.18.2/debian/patches/series	2026-08-14 14:56:19.000000000 +0200
@@ -1,2 +1,3 @@
 compat-with-poppler-22.06.patch
 pdf2djvu-poppler-26.01.0.patch
+fix-ftbfs-with-poppler-26.07.patch

Reply via email to