--- a/src/extension/internal/pdfinput/pdf-parser.cpp 2025-08-08 13:17:14.002919917 +0000 +++ b/src/extension/internal/pdfinput/pdf-parser.cpp 2025-08-08 14:01:55.065146101 +0000 @@ -2315,11 +2315,11 @@ state->textTransformDelta(originX, originY, &tOriginX, &tOriginY); // In Gfx.cc this is drawChar(...) - builder->addChar(state, state->getCurX() + riseX, state->getCurY() + riseY, + builder->addChar(state, state->_POPPLER_GET_CUR_TEXT_X() + riseX, state->_POPPLER_GET_CUR_TEXT_Y() + riseY, dx, dy, ax, ay, tOriginX, tOriginY, code, n, u, uLen); // Move onto next unicode character. - state->shift(tdx, tdy); + state->_POPPLER_TEXT_SHIFT_WITH_USER_COORDS(tdx, tdy); p += n; len -= n; } --- a/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp 2025-04-27 18:26:33.000000000 +0000 +++ b/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp 2025-08-08 14:09:18.057183473 +0000 @@ -318,7 +318,11 @@ #endif char **enc; const char *name; +#if POPPLER_CHECK_VERSION(25, 8, 0) + std::unique_ptr ff1c; +#else FoFiType1C *ff1c; +#endif std::optional font_face; std::vector codeToGID; bool substitute = false; @@ -429,7 +429,7 @@ FoFiTrueType *ff; #endif if (!font_data.empty()) { - ff = FoFiTrueType::make((fontchar)font_data.data(), font_data.size(), 0); + ff = _POPPLER_FOFI_TRUETYPE_MAKE(font_data, 0); } else { ff = FoFiTrueType::load(fileName.c_str(), 0); } @@ -459,7 +459,7 @@ FoFiTrueType *ff; #endif if (!font_data.empty()) { - ff = FoFiTrueType::make((fontchar)font_data.data(), font_data.size(), 0); + ff = _POPPLER_FOFI_TRUETYPE_MAKE(font_data, 0); } else { ff = FoFiTrueType::load(fileName.c_str(), 0); } @@ -493,7 +493,7 @@ case fontCIDType0C: if (!useCIDs) { if (!font_data.empty()) { - ff1c = FoFiType1C::make((fontchar)font_data.data(), font_data.size()); + ff1c = _POPPLER_FOFI_TYPE1C_MAKE(font_data); } else { ff1c = FoFiType1C::load(fileName.c_str()); } @@ -506,7 +506,9 @@ codeToGID.insert(codeToGID.begin(), src, src + n); gfree(src); #endif +#if !(POPPLER_CHECK_VERSION(25,8,0)) delete ff1c; +#endif } } @@ -542,13 +544,13 @@ FoFiTrueType *ff; #endif if (!font_data.empty()) { - ff = FoFiTrueType::make((fontchar)font_data.data(), font_data.size(), 0); + ff = _POPPLER_FOFI_TRUETYPE_MAKE(font_data, 0); } else { ff = FoFiTrueType::load(fileName.c_str(), 0); } if (ff) { if (ff->isOpenTypeCFF()) { - auto src = ff1c->_POPPLER_GET_CID_TO_GID_MAP(&n); + auto src = ff->_POPPLER_GET_CID_TO_GID_MAP(&n); #if POPPLER_CHECK_VERSION(25,2,0) codeToGID = std::move(src); #else --- a/src/extension/internal/pdfinput/poppler-transition-api.h 2025-08-08 13:17:18.567920302 +0000 +++ b/src/extension/internal/pdfinput/poppler-transition-api.h 2025-08-08 14:10:25.811189189 +0000 @@ -15,6 +15,20 @@ #include #include +#if POPPLER_CHECK_VERSION(25,8,0) +#define _POPPLER_TEXT_SHIFT_WITH_USER_COORDS(dx, dy) textShiftWithUserCoords(dx, dy) +#define _POPPLER_FOFI_TRUETYPE_MAKE(font_data, faceIndex) FoFiTrueType::make(std::span(font_data), faceIndex) +#define _POPPLER_FOFI_TYPE1C_MAKE(font_data) FoFiType1C::make(std::span(font_data)) +#define _POPPLER_GET_CUR_TEXT_X() getCurTextX() +#define _POPPLER_GET_CUR_TEXT_Y() getCurTextY() +#else +#define _POPPLER_TEXT_SHIFT_WITH_USER_COORDS(dx, dy) shift(dx, dy) +#define _POPPLER_FOFI_TRUETYPE_MAKE(font_data, faceIndex) FoFiTrueType::make((fontchar)font_data.data(), font_data.size(), faceIndex) +#define _POPPLER_FOFI_TYPE1C_MAKE(font_data) FoFiType1C::make((fontchar)font_data.data(), font_data.size()) +#define _POPPLER_GET_CUR_TEXT_X() getCurX() +#define _POPPLER_GET_CUR_TEXT_Y() getCurY() +#endif + #if POPPLER_CHECK_VERSION(25, 6, 0) #define _POPPLER_DECLARE_TRANSFER_FUNCTION_VECTOR(name) std::vector> name(4) #define _POPPLER_DELETE_TRANSFER_FUNCTION(name) name.reset() --- src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp 2025-04-27 18:26:33.000000000 +0000 +++ b/extension/internal/pdfinput/poppler-cairo-font-engine.cpp 2025-08-08 14:31:49.788297510 +0000