Submitted By: Pierre Labastie <pierre@linuxfromscratch.org>
Date: 2022-05-05
Initial Package Version: 7.3.3.2
Upstream Status: Unknown
Origin: freebsd
Description: Fixes API change from poppler-22.03 and -22.04

--- a/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx	2022-04-26 16:11:01 UTC
+++ b/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx
@@ -474,11 +474,17 @@ int PDFOutDev::parseFont( long long nNewId, GfxFont* g
     {
         // TODO(P3): Unfortunately, need to read stream twice, since
         // we must write byte count to stdout before
+#if !POPPLER_CHECK_VERSION(22, 4, 0)
         char* pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef(), &nSize );
+#else
+        std::optional<std::vector<unsigned char>> pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef() );
+#endif
         if( pBuf )
         {
             aNewFont.isEmbedded = true;
+#if !POPPLER_CHECK_VERSION(22, 4, 0)
             gfree(pBuf);
+#endif
         }
     }
 
@@ -492,21 +498,32 @@ void PDFOutDev::writeFontFile( GfxFont* gfxFont ) cons
         return;
 
     int nSize = 0;
-    char* pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef(), &nSize );
+#if !POPPLER_CHECK_VERSION(22, 4, 0)
+        char* pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef(), &nSize );
+#else
+        std::optional<std::vector<unsigned char>> pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef() );
+#endif
     if( !pBuf )
         return;
 
     // ---sync point--- see SYNC STREAMS above
     fflush(stdout);
-
+#if !POPPLER_CHECK_VERSION(22, 4, 0)
     if( fwrite(pBuf, sizeof(char), nSize, g_binary_out) != static_cast<size_t>(nSize) )
+#else
+    if( fwrite(reinterpret_cast<char*>(pBuf.value().data()), sizeof(char), nSize, g_binary_out) != static_cast<size_t>(nSize) )
+#endif
     {
-        gfree(pBuf);
+#if !POPPLER_CHECK_VERSION(22, 4, 0)
+            gfree(pBuf);
+#endif
         exit(1); // error
     }
     // ---sync point--- see SYNC STREAMS above
     fflush(g_binary_out);
-    gfree(pBuf);
+#if !POPPLER_CHECK_VERSION(22, 4, 0)
+            gfree(pBuf);
+#endif
 }
 
 #if POPPLER_CHECK_VERSION(0, 83, 0)
@@ -759,7 +776,11 @@ void PDFOutDev::updateFont(GfxState *state)
 {
     assert(state);
 
+#if !POPPLER_CHECK_VERSION(22, 4, 0)
     GfxFont *gfxFont = state->getFont();
+#else
+    GfxFont *gfxFont = state->getFont().get();
+#endif
     if( !gfxFont )
         return;
 
--- a/sdext/source/pdfimport/xpdfwrapper/wrapper_gpl.cxx	2022-03-23 13:32:00 UTC
+++ b/sdext/source/pdfimport/xpdfwrapper/wrapper_gpl.cxx
@@ -138,6 +138,15 @@ int main(int argc, char **argv)
     _setmode( _fileno( g_binary_out ), _O_BINARY );
 #endif
 
+#if POPPLER_CHECK_VERSION(22, 3, 0)
+    PDFDoc aDoc( std::make_unique<GooString>(pFileName),
+                 GooString(pOwnerPasswordStr),
+                 GooString(pUserPasswordStr) );
+
+    PDFDoc aErrDoc( std::make_unique<GooString>(pErrFileName),
+                 GooString(pOwnerPasswordStr),
+                 GooString(pUserPasswordStr) );
+#else
     PDFDoc aDoc( pFileName,
                  pOwnerPasswordStr,
                  pUserPasswordStr );
@@ -145,6 +154,7 @@ int main(int argc, char **argv)
     PDFDoc aErrDoc( pErrFileName,
                  pOwnerPasswordStr,
                  pUserPasswordStr );
+#endif
 
     // Check various permissions for aDoc.
     PDFDoc &rDoc = aDoc.isOk()? aDoc: aErrDoc;
