Hi,

this fixes libreoffice for the upcoming update to poppler-26.02.0.

Patches are from upstream, with proper #if's, so it should still
build with poppler-26.01.0.

ok?

Ciao,
        Kili

Index: patches/patch-sdext_source_pdfimport_xpdfwrapper_pdfioutdev_gpl_cxx
===================================================================
RCS file: patches/patch-sdext_source_pdfimport_xpdfwrapper_pdfioutdev_gpl_cxx
diff -N patches/patch-sdext_source_pdfimport_xpdfwrapper_pdfioutdev_gpl_cxx
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-sdext_source_pdfimport_xpdfwrapper_pdfioutdev_gpl_cxx 11 Feb 
2026 21:37:27 -0000
@@ -0,0 +1,75 @@
+Fix build with poppler-26.02.0.
+
+From upstream commit 3c29b709cd2b5b18776b3c15638b66bd8a7dcb07.
+
+Index: sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx
+--- sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx.orig
++++ sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx
+@@ -711,13 +711,17 @@ void PDFOutDev::restoreState(GfxState*)
+     printf( "restoreState\n" );
+ }
+ 
+-#if POPPLER_CHECK_VERSION(0, 71, 0)
++#if POPPLER_CHECK_VERSION(26, 2, 0)
++void PDFOutDev::setDefaultCTM(const std::array<double, 6> &pMat)
++#elif POPPLER_CHECK_VERSION(0, 71, 0)
+ void PDFOutDev::setDefaultCTM(const double *pMat)
+ #else
+ void PDFOutDev::setDefaultCTM(double *pMat)
+ #endif
+ {
++#if !POPPLER_CHECK_VERSION(26, 2, 0)
+     assert(pMat);
++#endif
+ 
+     OutputDev::setDefaultCTM(pMat);
+ 
+@@ -737,8 +741,12 @@ void PDFOutDev::updateCTM(GfxState* state,
+ {
+     assert(state);
+ 
++#if POPPLER_CHECK_VERSION(26, 2, 0)
++    const std::array<double, 6> pMat = state->getCTM();
++#else
+     const double* const pMat = state->getCTM();
+     assert(pMat);
++#endif
+ 
+     printf( "updateCtm %f %f %f %f %f %f\n",
+             normalize(pMat[0]),
+@@ -1044,7 +1052,11 @@ void PDFOutDev::drawChar(GfxState *state, double x, do
+ 
+     double csdx = 0.0;
+     double csdy = 0.0;
++#if POPPLER_CHECK_VERSION(26, 2, 0)
++    if (!state->getFont() || GfxFont::WritingMode::Horizontal == 
state->getFont()->getWMode())
++#else
+     if (!state->getFont() || !state->getFont()->getWMode())
++#endif
+     {
+         csdx = state->getCharSpace();
+         if (*u == ' ')
+@@ -1067,7 +1079,11 @@ void PDFOutDev::drawChar(GfxState *state, double x, do
+     const double aPositionX(x-originX);
+     const double aPositionY(y-originY);
+ 
++#if POPPLER_CHECK_VERSION(26, 2, 0)
++    const std::array<double, 6> pTextMat=state->getTextMat();
++#else
+     const double* pTextMat=state->getTextMat();
++#endif
+     printf( "drawChar %f %f %f %f %f %f %f %f %f ",
+             normalize(aPositionX),
+             normalize(aPositionY),
+@@ -1348,7 +1364,11 @@ poppler_bool PDFOutDev::tilingPatternFill(GfxState *st
+ 
+     const int nDPI = 72; // GfxState seems to have 72.0 as magic for some 
reason
+     auto pSplashGfxState = new GfxState(nDPI, nDPI, &aBox, 0, false);
++#if POPPLER_CHECK_VERSION(26, 2, 0)
++    auto pSplashOut = new SplashOutputDev(splashModeRGB8, 1, nullptr);
++#else
+     auto pSplashOut = new SplashOutputDev(splashModeRGB8, 1, false, nullptr);
++#endif
+     pSplashOut->setEnableFreeType(false);
+     pSplashOut->startDoc(m_pDoc);
+     pSplashOut->startPage(0 /* pageNum */, pSplashGfxState, nullptr /* xref 
*/);
Index: patches/patch-sdext_source_pdfimport_xpdfwrapper_pdfioutdev_gpl_hxx
===================================================================
RCS file: patches/patch-sdext_source_pdfimport_xpdfwrapper_pdfioutdev_gpl_hxx
diff -N patches/patch-sdext_source_pdfimport_xpdfwrapper_pdfioutdev_gpl_hxx
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-sdext_source_pdfimport_xpdfwrapper_pdfioutdev_gpl_hxx 11 Feb 
2026 21:37:27 -0000
@@ -0,0 +1,62 @@
+Fix build with poppler-26.02.0.
+
+From upstream commit 3c29b709cd2b5b18776b3c15638b66bd8a7dcb07.
+
+Index: sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.hxx
+--- sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.hxx.orig
++++ sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.hxx
+@@ -84,13 +84,21 @@ namespace pdfi
+             isUnderline(rSrc.isUnderline),
+             size(rSrc.size)
+         {
++#if POPPLER_CHECK_VERSION(26, 2, 0)
++            familyName.append(rSrc.getFamilyName());
++#else
+             familyName.append(&rSrc.getFamilyName());
++#endif
+         }
+ 
+         FontAttributes& operator=( const FontAttributes& rSrc )
+         {
+             familyName.clear();
++#if POPPLER_CHECK_VERSION(26, 2, 0)
++            familyName.append(rSrc.getFamilyName());
++#else
+             familyName.append(&rSrc.getFamilyName());
++#endif
+ 
+             isEmbedded  = rSrc.isEmbedded;
+             maFontWeight= rSrc.maFontWeight;
+@@ -103,12 +111,21 @@ namespace pdfi
+ 
+         bool operator==(const FontAttributes& rFont) const
+         {
++#if POPPLER_CHECK_VERSION(26, 2, 0)
++            return getFamilyName().compare(rFont.getFamilyName())==0 &&
++                isEmbedded == rFont.isEmbedded &&
++                maFontWeight == rFont.maFontWeight &&
++                isItalic == rFont.isItalic &&
++                isUnderline == rFont.isUnderline &&
++                size == rFont.size;
++#else
+             return getFamilyName().cmp(&rFont.getFamilyName())==0 &&
+                 isEmbedded == rFont.isEmbedded &&
+                 maFontWeight == rFont.maFontWeight &&
+                 isItalic == rFont.isItalic &&
+                 isUnderline == rFont.isUnderline &&
+                 size == rFont.size;
++#endif
+         }
+ 
+         GooString   familyName;
+@@ -171,7 +188,9 @@ namespace pdfi
+         //----- initialization and control
+ 
+         // Set default transform matrix.
+-#if POPPLER_CHECK_VERSION(0, 71, 0)
++#if POPPLER_CHECK_VERSION(26, 2, 0)
++void setDefaultCTM(const std::array<double, 6> &pMat) override;
++#elif POPPLER_CHECK_VERSION(0, 71, 0)
+         virtual void setDefaultCTM(const double *ctm) override;
+ #else
+         virtual void setDefaultCTM(double *ctm) override;

Reply via email to