Index: libreoffice-7.3.3.1/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx =================================================================== --- libreoffice-7.3.3.1.orig/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx +++ libreoffice-7.3.3.1/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx @@ -474,12 +474,21 @@ int PDFOutDev::parseFont( long long nNew { // TODO(P3): Unfortunately, need to read stream twice, since // we must write byte count to stdout before +#if POPPLER_CHECK_VERSION(22, 04, 0) // readEmbFontFile signature changed + auto pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef()); + if ( pBuf ) + { + aNewFont.isEmbedded = true; + nSize = pBuf->size(); + } +#else char* pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef(), &nSize ); if( pBuf ) { aNewFont.isEmbedded = true; gfree(pBuf); } +#endif } m_aFontMap[ nNewId ] = aNewFont; @@ -492,21 +501,35 @@ void PDFOutDev::writeFontFile( GfxFont* return; int nSize = 0; +#if POPPLER_CHECK_VERSION(22, 04, 0) // readEmbFontFile signature changed + auto pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef()); + if ( !pBuf ) + return; + nSize = pBuf->size(); +#else char* pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef(), &nSize ); if( !pBuf ) return; +#endif // ---sync point--- see SYNC STREAMS above fflush(stdout); +#if POPPLER_CHECK_VERSION(22, 04, 0) // readEmbFontFile signature changed + if( fwrite(pBuf->data(), sizeof(unsigned char), nSize, g_binary_out) != static_cast(nSize) ) + { +#else if( fwrite(pBuf, sizeof(char), nSize, g_binary_out) != static_cast(nSize) ) { gfree(pBuf); +#endif exit(1); // error } // ---sync point--- see SYNC STREAMS above fflush(g_binary_out); +#if !POPPLER_CHECK_VERSION(22, 04, 0) // readEmbFontFile signature changed gfree(pBuf); +#endif } #if POPPLER_CHECK_VERSION(0, 83, 0)