]> git.pld-linux.org Git - packages/libreoffice.git/commitdiff
- fixes for poppler 22.3 and 22.4 (testing)
authorJakub Bogusz <qboosh@pld-linux.org>
Tue, 19 Apr 2022 20:05:49 +0000 (22:05 +0200)
committerJakub Bogusz <qboosh@pld-linux.org>
Tue, 19 Apr 2022 20:05:49 +0000 (22:05 +0200)
libreoffice-poppler.patch [new file with mode: 0644]

diff --git a/libreoffice-poppler.patch b/libreoffice-poppler.patch
new file mode 100644 (file)
index 0000000..bcb2678
--- /dev/null
@@ -0,0 +1,156 @@
+--- libreoffice-7.2.6.2/sdext/source/pdfimport/xpdfwrapper/wrapper_gpl.cxx.orig        2022-03-03 14:25:45.000000000 +0100
++++ libreoffice-7.2.6.2/sdext/source/pdfimport/xpdfwrapper/wrapper_gpl.cxx     2022-04-19 20:30:14.031282962 +0200
+@@ -115,6 +115,21 @@ int main(int argc, char **argv)
+     }
+     // PDFDoc takes over ownership for all strings below
++#if POPPLER_CHECK_VERSION(22, 3, 0)
++    auto pFileName = std::make_unique<GooString>(argv[1]);
++    auto pErrFileName = std::make_unique<GooString>(argv[2]);
++
++    // check for password string(s)
++    std::optional<GooString> pOwnerPasswordStr, pUserPasswordStr;
++    if( aPwBuf[0] != 0 )
++        pOwnerPasswordStr = GooString(aPwBuf);
++    else if( ownerPassword[0] != '\001' )
++        pOwnerPasswordStr = GooString(ownerPassword);
++    if( aPwBuf[0] != 0 )
++        pUserPasswordStr = GooString(aPwBuf);
++    else if( userPassword[0] != '\001' )
++        pUserPasswordStr = GooString(userPassword);
++#else
+     GooString* pFileName    = new GooString(argv[1]);
+     GooString* pErrFileName = new GooString(argv[2]);
+@@ -129,6 +144,7 @@ int main(int argc, char **argv)
+                                 : (userPassword[0] != '\001'
+                                   ? new GooString(userPassword)
+                                   : nullptr ) );
++#endif
+     if( outputFile[0] != '\001' )
+         g_binary_out = fopen(outputFile,"wb");
+@@ -138,6 +154,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::move(pFileName),
++                 pOwnerPasswordStr,
++                 pUserPasswordStr );
++
++    PDFDoc aErrDoc( std::move(pErrFileName),
++                 pOwnerPasswordStr,
++                 pUserPasswordStr );
++#else
+     PDFDoc aDoc( pFileName,
+                  pOwnerPasswordStr,
+                  pUserPasswordStr );
+@@ -145,6 +170,7 @@ int main(int argc, char **argv)
+     PDFDoc aErrDoc( pErrFileName,
+                  pOwnerPasswordStr,
+                  pUserPasswordStr );
++#endif
+     // Check various permissions for aDoc.
+     PDFDoc &rDoc = aDoc.isOk()? aDoc: aErrDoc;
+--- libreoffice-7.2.6.2/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.hxx.orig     2022-03-03 14:25:45.000000000 +0100
++++ libreoffice-7.2.6.2/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.hxx  2022-04-19 19:53:39.226719292 +0200
+@@ -147,8 +147,13 @@ namespace pdfi
+         std::unique_ptr<UnicodeMap>             m_pUtf8Map;
+         bool                                    m_bSkipImages;
++#if POPPLER_CHECK_VERSION(22, 4, 0)
++        int  parseFont( long long nNewId, std::shared_ptr<GfxFont> pFont, GfxState* state ) const;
++        void writeFontFile( std::shared_ptr<GfxFont> gfxFont ) const;
++#else
+         int  parseFont( long long nNewId, GfxFont* pFont, GfxState* state ) const;
+         void writeFontFile( GfxFont* gfxFont ) const;
++#endif
+ #if POPPLER_CHECK_VERSION(0, 83, 0)
+         static void printPath( const GfxPath* pPath );
+ #else
+--- libreoffice-7.2.6.2/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx.orig     2022-03-03 14:25:45.000000000 +0100
++++ libreoffice-7.2.6.2/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx  2022-04-19 19:58:44.165967063 +0200
+@@ -427,7 +427,11 @@ static void writeMaskLF( OutputBuffer&
+                          bool              bInvert ) { writeMask_(o_rOutputBuf,str,width,height,bInvert); }
++#if POPPLER_CHECK_VERSION(22, 4, 0)
++int PDFOutDev::parseFont( long long nNewId, std::shared_ptr<GfxFont> gfxFont, GfxState* state ) const
++#else
+ int PDFOutDev::parseFont( long long nNewId, GfxFont* gfxFont, GfxState* state ) const
++#endif
+ {
+     FontAttributes aNewFont;
+     int nSize = 0;
+@@ -461,23 +465,49 @@ 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, 4, 0)
++        auto buf = gfxFont->readEmbFontFile( m_pDoc->getXRef() );
++        if( buf )
++        {
++            aNewFont.isEmbedded = true;
++            nSize = buf->size();
++        }
++#else
+         char* pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef(), &nSize );
+         if( pBuf )
+         {
+             aNewFont.isEmbedded = true;
+             gfree(pBuf);
+         }
++#endif
+     }
+     m_aFontMap[ nNewId ] = aNewFont;
+     return nSize;
+ }
++#if POPPLER_CHECK_VERSION(22, 4, 0)
++void PDFOutDev::writeFontFile( std::shared_ptr<GfxFont> gfxFont ) const
++#else
+ void PDFOutDev::writeFontFile( GfxFont* gfxFont ) const
++#endif
+ {
+     if( gfxFont->getType() != fontTrueType && gfxFont->getType() != fontType1 )
+         return;
++#if POPPLER_CHECK_VERSION(22, 4, 0)
++    auto buf = gfxFont->readEmbFontFile( m_pDoc->getXRef() );
++    if( !buf )
++        return;
++
++    // ---sync point--- see SYNC STREAMS above
++    fflush(stdout);
++
++    if( fwrite(buf->data(), 1, buf->size(), g_binary_out) != buf->size() )
++        exit(1); // error
++    // ---sync point--- see SYNC STREAMS above
++    fflush(g_binary_out);
++#else
+     int nSize = 0;
+     char* pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef(), &nSize );
+     if( !pBuf )
+@@ -494,6 +524,7 @@ void PDFOutDev::writeFontFile( GfxFont*
+     // ---sync point--- see SYNC STREAMS above
+     fflush(g_binary_out);
+     gfree(pBuf);
++#endif
+ }
+ #if POPPLER_CHECK_VERSION(0, 83, 0)
+@@ -747,7 +778,11 @@ void PDFOutDev::updateFont(GfxState *sta
+ {
+     assert(state);
++#if POPPLER_CHECK_VERSION(22, 4, 0)
++    auto gfxFont = state->getFont();
++#else
+     GfxFont *gfxFont = state->getFont();
++#endif
+     if( !gfxFont )
+         return;
This page took 0.055368 seconds and 4 git commands to generate.