diff --git a/0001-16734-Build-break-with-poppler-22.2.0.patch b/0001-16734-Build-break-with-poppler-22.2.0.patch new file mode 100644 index 0000000..3a6ffee --- /dev/null +++ b/0001-16734-Build-break-with-poppler-22.2.0.patch @@ -0,0 +1,132 @@ +From 699df2330c9bd28a43fa7a5ec25581ca22ddb898 Mon Sep 17 00:00:00 2001 +From: jghali +Date: Wed, 2 Feb 2022 23:12:52 +0000 +Subject: [PATCH] #16734: Build break with poppler 22.2.0 + +git-svn-id: svn://scribus.net/trunk/Scribus@24884 11d20701-8431-0410-a711-e3c959e3b870 +--- + scribus/plugins/import/pdf/slaoutput.cpp | 47 +++++++++++++++++++----- + 1 file changed, 37 insertions(+), 10 deletions(-) + +diff --git a/scribus/plugins/import/pdf/slaoutput.cpp b/scribus/plugins/import/pdf/slaoutput.cpp +index 5894bf2ad..3650c96f5 100644 +--- a/scribus/plugins/import/pdf/slaoutput.cpp ++++ b/scribus/plugins/import/pdf/slaoutput.cpp +@@ -7,6 +7,11 @@ for which a new license (GPL+exception) is in place. + + #include "slaoutput.h" + ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 2, 0) ++#include ++#include ++#endif ++ + #include + #include + #include +@@ -3027,18 +3032,24 @@ void SlaOutputDev::markPoint(POPPLER_CONST char *name, Dict *properties) + void SlaOutputDev::updateFont(GfxState *state) + { + GfxFont *gfxFont; +- GfxFontLoc *fontLoc; ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 2, 0) ++ std::optional fontLoc; ++ const GooString * fileName = nullptr; ++ std::unique_ptr ff; ++#else ++ GfxFontLoc * fontLoc = nullptr; ++ GooString * fileName = nullptr; ++ FoFiTrueType * ff = nullptr; ++#endif + GfxFontType fontType; + SlaOutFontFileID *id; + SplashFontFile *fontFile; + SplashFontSrc *fontsrc = nullptr; +- FoFiTrueType *ff; + Object refObj, strObj; +- GooString *fileName; +- char *tmpBuf; ++ char *tmpBuf = nullptr; + int tmpBufLen = 0; +- int *codeToGID; +- const double *textMat; ++ int *codeToGID = nullptr; ++ const double *textMat = nullptr; + double m11, m12, m21, m22, fontSize; + SplashCoord mat[4]; + int n = 0; +@@ -3046,9 +3057,6 @@ void SlaOutputDev::updateFont(GfxState *state) + SplashCoord matrix[6]; + + m_font = nullptr; +- fileName = nullptr; +- tmpBuf = nullptr; +- fontLoc = nullptr; + + gfxFont = state->getFont(); + if (!gfxFont) +@@ -3083,7 +3091,11 @@ void SlaOutputDev::updateFont(GfxState *state) + } + else + { // gfxFontLocExternal ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 2, 0) ++ fileName = fontLoc->pathAsGooString(); ++#else + fileName = fontLoc->path; ++#endif + fontType = fontLoc->fontType; + } + +@@ -3136,9 +3148,14 @@ void SlaOutputDev::updateFont(GfxState *state) + ff = FoFiTrueType::make(tmpBuf, tmpBufLen); + if (ff) + { ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 2, 0) ++ codeToGID = ((Gfx8BitFont*) gfxFont)->getCodeToGIDMap(ff.get()); ++ ff.reset(); ++#else + codeToGID = ((Gfx8BitFont *)gfxFont)->getCodeToGIDMap(ff); +- n = 256; + delete ff; ++#endif ++ n = 256; + } + else + { +@@ -3209,8 +3226,13 @@ void SlaOutputDev::updateFont(GfxState *state) + ff = FoFiTrueType::make(tmpBuf, tmpBufLen); + if (! ff) + goto err2; ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 2, 0) ++ codeToGID = ((GfxCIDFont*) gfxFont)->getCodeToGIDMap(ff.get(), &n); ++ ff.reset(); ++#else + codeToGID = ((GfxCIDFont *)gfxFont)->getCodeToGIDMap(ff, &n); + delete ff; ++#endif + } + if (!(fontFile = m_fontEngine->loadTrueTypeFont( + id, +@@ -3247,14 +3269,19 @@ void SlaOutputDev::updateFont(GfxState *state) + mat[3] = -m22; + m_font = m_fontEngine->getFont(fontFile, mat, matrix); + ++#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(22, 2, 0) + delete fontLoc; ++#endif + if (fontsrc && !fontsrc->isFile) + fontsrc->unref(); + return; + + err2: + delete id; ++#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(22, 2, 0) + delete fontLoc; ++#endif ++ + err1: + if (fontsrc && !fontsrc->isFile) + fontsrc->unref(); +-- +2.35.1 + diff --git a/0001-16764-Better-patch-avoid-a-memory-leak.patch b/0001-16764-Better-patch-avoid-a-memory-leak.patch new file mode 100644 index 0000000..9fdd2ca --- /dev/null +++ b/0001-16764-Better-patch-avoid-a-memory-leak.patch @@ -0,0 +1,101 @@ +From 20c1757209a9742edd2b1c524acb88ae1c557d73 Mon Sep 17 00:00:00 2001 +From: jghali +Date: Thu, 3 Mar 2022 00:18:06 +0000 +Subject: [PATCH] #16764: Better patch, avoid a memory leak + +git-svn-id: svn://scribus.net/trunk/Scribus@24989 11d20701-8431-0410-a711-e3c959e3b870 +--- + scribus/plugins/import/pdf/importpdf.cpp | 34 +++++++++--------------- + scribus/util_os.cpp | 2 ++ + 2 files changed, 15 insertions(+), 21 deletions(-) + +diff --git a/scribus/plugins/import/pdf/importpdf.cpp b/scribus/plugins/import/pdf/importpdf.cpp +index 970a1a37c..7da93a5b2 100644 +--- a/scribus/plugins/import/pdf/importpdf.cpp ++++ b/scribus/plugins/import/pdf/importpdf.cpp +@@ -57,6 +57,7 @@ for which a new license (GPL+exception) is in place. + #include "util.h" + #include "util_formats.h" + #include "util_math.h" ++#include "util_os.h" + + #include "ui/customfdialog.h" + #include "ui/missing.h" +@@ -78,15 +79,12 @@ QImage PdfPlug::readThumbnail(const QString& fName) + globalParams->setErrQuiet(gTrue); + + QString pdfFile = QDir::toNativeSeparators(fName); +-#if defined(Q_OS_WIN32) +- auto fname = new GooString(pdfFile.toUtf8().data()); +-#else +- auto fname = new GooString(QFile::encodeName(pdfFile).data()); +-#endif +- ++ QByteArray encodedFileName = os_is_win() ? pdfFile.toUtf8() : QFile::encodeName(pdfFile); + #if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 3, 0) +- PDFDoc pdfDoc{ std::make_unique(fname) }; ++ auto fname = std::make_unique(encodedFileName.data()); ++ PDFDoc pdfDoc{ std::move(fname) }; + #else ++ auto fname = new GooString(encodedFileName.data()); + PDFDoc pdfDoc{fname, nullptr, nullptr, nullptr}; + #endif + if (!pdfDoc.isOk() || pdfDoc.getErrorCode() == errEncrypted) +@@ -330,17 +328,14 @@ bool PdfPlug::convert(const QString& fn) + globalParams.reset(new GlobalParams()); + globalParams->setErrQuiet(gTrue); + +-#if defined(Q_OS_WIN32) +- auto fname = new GooString(fn.toUtf8().data()); +-#else +- auto fname = new GooString(QFile::encodeName(fn).data()); +-#endif +- + QList ocgGroups; ++ QByteArray encodedFileName = os_is_win() ? fn.toUtf8() : QFile::encodeName(fn); + #if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 3, 0) +- auto pdfDoc = std::make_unique(std::make_unique(fname)); ++ auto fname = std::make_unique(encodedFileName.data()); ++ auto pdfDoc = std::make_unique(std::move(fname)); + #else +- auto pdfDoc = std::unique_ptr(new PDFDoc(fname, nullptr, nullptr, nullptr)); ++ auto fname = new GooString(encodedFileName.data()); ++ auto pdfDoc = std::make_unique(fname, nullptr, nullptr, nullptr); + #endif + if (pdfDoc) + { +@@ -355,15 +350,12 @@ bool PdfPlug::convert(const QString& fn) + QString text = QInputDialog::getText(mw, tr("Open PDF-File"), tr("Password"), QLineEdit::Normal, "", &ok); + if (ok && !text.isEmpty()) + { +-#if defined(Q_OS_WIN32) +- auto fname = new GooString(fn.toUtf8().data()); +-#else +- auto fname = new GooString(QFile::encodeName(fn).data()); +-#endif + #if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 3, 0) ++ auto fname = std::make_unique(encodedFileName.data()); + std::optional userPW(std::in_place, text.toLocal8Bit().data()); +- pdfDoc.reset(new PDFDoc(std::make_unique(fname), userPW, userPW, nullptr)); ++ pdfDoc.reset(new PDFDoc(std::move(fname), userPW, userPW, nullptr)); + #else ++ auto fname = new GooString(encodedFileName.data()); + auto userPW = new GooString(text.toLocal8Bit().data()); + pdfDoc.reset(new PDFDoc(fname, userPW, userPW, nullptr)); + #endif +diff --git a/scribus/util_os.cpp b/scribus/util_os.cpp +index fadf37d59..56e50aec3 100644 +--- a/scribus/util_os.cpp ++++ b/scribus/util_os.cpp +@@ -22,6 +22,8 @@ for which a new license (GPL+exception) is in place. + + #include + ++#include "util_os.h" ++ + bool os_is_osx() + { + #ifdef Q_OS_MACOS +-- +2.35.1 + diff --git a/0001-16764-Build-break-with-poppler-22.03.0.patch b/0001-16764-Build-break-with-poppler-22.03.0.patch new file mode 100644 index 0000000..217df95 --- /dev/null +++ b/0001-16764-Build-break-with-poppler-22.03.0.patch @@ -0,0 +1,55 @@ +From 6512c88e45ad8406949a238962b9523f9c21e0c3 Mon Sep 17 00:00:00 2001 +From: jghali +Date: Wed, 2 Mar 2022 22:22:53 +0000 +Subject: [PATCH] #16764: Build break with poppler 22.03.0 + +git-svn-id: svn://scribus.net/trunk/Scribus@24982 11d20701-8431-0410-a711-e3c959e3b870 +--- + scribus/plugins/import/pdf/importpdf.cpp | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +diff --git a/scribus/plugins/import/pdf/importpdf.cpp b/scribus/plugins/import/pdf/importpdf.cpp +index 154e58a3f..392dcd9e6 100644 +--- a/scribus/plugins/import/pdf/importpdf.cpp ++++ b/scribus/plugins/import/pdf/importpdf.cpp +@@ -89,7 +89,11 @@ QImage PdfPlug::readThumbnail(const QString& fName) + #endif + globalParams->setErrQuiet(gTrue); + ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 3, 0) ++ PDFDoc pdfDoc{ std::make_unique(fname) }; ++#else + PDFDoc pdfDoc{fname, nullptr, nullptr, nullptr}; ++#endif + if (!pdfDoc.isOk() || pdfDoc.getErrorCode() == errEncrypted) + return QImage(); + +@@ -342,7 +346,11 @@ bool PdfPlug::convert(const QString& fn) + globalParams->setErrQuiet(gTrue); + // globalParams->setPrintCommands(gTrue); + QList ocgGroups; ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 3, 0) ++ auto pdfDoc = std::make_unique(std::make_unique(fname)); ++#else + auto pdfDoc = std::unique_ptr(new PDFDoc(fname, nullptr, nullptr, nullptr)); ++#endif + if (pdfDoc) + { + if (pdfDoc->getErrorCode() == errEncrypted) +@@ -361,8 +369,13 @@ bool PdfPlug::convert(const QString& fn) + #else + auto fname = new GooString(QFile::encodeName(fn).data()); + #endif ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 3, 0) ++ std::optional userPW(std::in_place, text.toLocal8Bit().data()); ++ pdfDoc.reset(new PDFDoc(std::make_unique(fname), userPW, userPW, nullptr)); ++#else + auto userPW = new GooString(text.toLocal8Bit().data()); + pdfDoc.reset(new PDFDoc(fname, userPW, userPW, nullptr)); ++#endif + qApp->changeOverrideCursor(QCursor(Qt::WaitCursor)); + } + if ((!pdfDoc) || (pdfDoc->getErrorCode() != errNone)) +-- +2.35.1 + diff --git a/0001-Enforce-poppler-version-0.86.0.patch b/0001-Enforce-poppler-version-0.86.0.patch new file mode 100644 index 0000000..c95466c --- /dev/null +++ b/0001-Enforce-poppler-version-0.86.0.patch @@ -0,0 +1,537 @@ +From 5838ad95e3378c0417bbd42d66ab24b63d585c92 Mon Sep 17 00:00:00 2001 +From: jghali +Date: Wed, 2 Mar 2022 22:48:29 +0000 +Subject: [PATCH] Enforce poppler version >= 0.86.0 + +git-svn-id: svn://scribus.net/trunk/Scribus@24985 11d20701-8431-0410-a711-e3c959e3b870 +--- + cmake/modules/Findpoppler.cmake | 4 +- + scribus/plugins/import/pdf/importpdf.cpp | 65 ++----------- + scribus/plugins/import/pdf/slaoutput.cpp | 114 ----------------------- + scribus/plugins/import/pdf/slaoutput.h | 7 -- + 4 files changed, 10 insertions(+), 180 deletions(-) + +diff --git a/cmake/modules/Findpoppler.cmake b/cmake/modules/Findpoppler.cmake +index 56ce613ae..9cab5532a 100644 +--- a/cmake/modules/Findpoppler.cmake ++++ b/cmake/modules/Findpoppler.cmake +@@ -1,8 +1,8 @@ + #include(FindPkgConfig) + find_package(PkgConfig QUIET) +-pkg_search_module(poppler libpoppler>=0.62.0 poppler>=0.62.0) ++pkg_search_module(poppler libpoppler>=0.86.0 poppler>=0.86.0) + if (poppler_FOUND) +- pkg_search_module(poppler_cpp REQUIRED libpoppler-cpp>=0.62.0 poppler-cpp>=0.62.0) ++ pkg_search_module(poppler_cpp REQUIRED libpoppler-cpp>=0.86.0 poppler-cpp>=0.86.0) + endif(poppler_FOUND) + + find_path(poppler_INCLUDE_DIR +diff --git a/scribus/plugins/import/pdf/importpdf.cpp b/scribus/plugins/import/pdf/importpdf.cpp +index 392dcd9e6..970a1a37c 100644 +--- a/scribus/plugins/import/pdf/importpdf.cpp ++++ b/scribus/plugins/import/pdf/importpdf.cpp +@@ -74,20 +74,15 @@ PdfPlug::PdfPlug(ScribusDoc* doc, int flags) + + QImage PdfPlug::readThumbnail(const QString& fName) + { +- QString pdfFile = QDir::toNativeSeparators(fName); +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 83, 0) + globalParams.reset(new GlobalParams()); +-#else +- std::unique_ptr globalParamsPtr(new GlobalParams()); +- globalParams = globalParamsPtr.get(); +-#endif ++ globalParams->setErrQuiet(gTrue); + +-#if defined(Q_OS_WIN32) && POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 62, 0) ++ QString pdfFile = QDir::toNativeSeparators(fName); ++#if defined(Q_OS_WIN32) + auto fname = new GooString(pdfFile.toUtf8().data()); + #else + auto fname = new GooString(QFile::encodeName(pdfFile).data()); + #endif +- globalParams->setErrQuiet(gTrue); + + #if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 3, 0) + PDFDoc pdfDoc{ std::make_unique(fname) }; +@@ -332,19 +327,15 @@ bool PdfPlug::convert(const QString& fn) + qApp->processEvents(); + } + +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 83, 0) + globalParams.reset(new GlobalParams()); +-#else +- std::unique_ptr globalParamsPtr(new GlobalParams()); +- globalParams = globalParamsPtr.get(); +-#endif +-#if defined(Q_OS_WIN32) && POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 62, 0) ++ globalParams->setErrQuiet(gTrue); ++ ++#if defined(Q_OS_WIN32) + auto fname = new GooString(fn.toUtf8().data()); + #else + auto fname = new GooString(QFile::encodeName(fn).data()); + #endif +- globalParams->setErrQuiet(gTrue); +-// globalParams->setPrintCommands(gTrue); ++ + QList ocgGroups; + #if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 3, 0) + auto pdfDoc = std::make_unique(std::make_unique(fname)); +@@ -364,7 +355,7 @@ bool PdfPlug::convert(const QString& fn) + QString text = QInputDialog::getText(mw, tr("Open PDF-File"), tr("Password"), QLineEdit::Normal, "", &ok); + if (ok && !text.isEmpty()) + { +-#if defined(Q_OS_WIN32) && POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 62, 0) ++#if defined(Q_OS_WIN32) + auto fname = new GooString(fn.toUtf8().data()); + #else + auto fname = new GooString(QFile::encodeName(fn).data()); +@@ -382,9 +373,6 @@ bool PdfPlug::convert(const QString& fn) + { + if (m_progressDialog) + m_progressDialog->close(); +-#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 83, 0) +- delete globalParams; +-#endif + return false; + } + if (m_progressDialog) +@@ -494,7 +482,6 @@ bool PdfPlug::convert(const QString& fn) + } + else + { +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 69, 0) + const auto& ocgs = ocg->getOCGs (); + for (const auto& ocg : ocgs) + { +@@ -506,25 +493,11 @@ bool PdfPlug::convert(const QString& fn) + ocgNames.append(ocgName); + } + } +-#else +- GooList *ocgs = ocg->getOCGs (); +- for (int i = 0; i < ocgs->getLength (); ++i) +- { +- OptionalContentGroup *oc = (OptionalContentGroup *)ocgs->get(i); +- QString ocgName = UnicodeParsedString(oc->getName()); +- if (!ocgNames.contains(ocgName)) +- { +- ocgGroups.prepend(oc); +- ocgNames.append(ocgName); +- } +- } +-#endif + } + } + } + else + { +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 69, 0) + const auto& ocgs = ocg->getOCGs (); + for (const auto& ocg : ocgs) + { +@@ -536,19 +509,6 @@ bool PdfPlug::convert(const QString& fn) + ocgNames.append(ocgName); + } + } +-#else +- GooList *ocgs = ocg->getOCGs (); +- for (int i = 0; i < ocgs->getLength (); ++i) +- { +- OptionalContentGroup *oc = (OptionalContentGroup *)ocgs->get(i); +- QString ocgName = UnicodeParsedString(oc->getName()); +- if (!ocgNames.contains(ocgName)) +- { +- ocgGroups.prepend(oc); +- ocgNames.append(ocgName); +- } +- } +-#endif + } + } + +@@ -787,13 +747,8 @@ bool PdfPlug::convert(const QString& fn) + names = catDict.dictLookup("OpenAction"); + if (names.isDict()) + { +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) + std::unique_ptr linkActionUPtr = LinkAction::parseAction(&names, pdfDoc->getCatalog()->getBaseURI()); + LinkAction *linkAction = linkActionUPtr.get(); +-#else +- LinkAction *linkAction = nullptr; +- linkAction = LinkAction::parseAction(&names, pdfDoc->getCatalog()->getBaseURI()); +-#endif + if (linkAction && (linkAction->getKind() == actionJavaScript)) + { + LinkJavaScript *jsa = (LinkJavaScript*) linkAction; +@@ -861,11 +816,7 @@ bool PdfPlug::convert(const QString& fn) + } + pdfDoc.reset(); + } +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 83, 0) + globalParams.reset(); +-#else +- globalParams = nullptr; +-#endif + + // qDebug() << "converting finished"; + // qDebug() << "Imported" << m_elements.count() << "Elements"; +diff --git a/scribus/plugins/import/pdf/slaoutput.cpp b/scribus/plugins/import/pdf/slaoutput.cpp +index a6f4e00fa..b6f2b8c21 100644 +--- a/scribus/plugins/import/pdf/slaoutput.cpp ++++ b/scribus/plugins/import/pdf/slaoutput.cpp +@@ -332,15 +332,9 @@ LinkAction* SlaOutputDev::SC_getAction(AnnotWidget *ano) + } + + /* Replacement for the crippled Poppler function LinkAction* AnnotWidget::getAdditionalAction(AdditionalActionsType type) */ +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) + std::unique_ptr SlaOutputDev::SC_getAdditionalAction(const char *key, AnnotWidget *ano) + { + std::unique_ptr linkAction; +-#else +-LinkAction* SlaOutputDev::SC_getAdditionalAction(const char *key, AnnotWidget *ano) +-{ +- LinkAction *linkAction = nullptr; +-#endif + Object obj; + Ref refa = ano->getRef(); + +@@ -467,11 +461,7 @@ bool SlaOutputDev::handleLinkAnnot(Annot* annota, double xCoor, double yCoor, do + if (dst->isPageRef()) + { + Ref dstr = dst->getPageRef(); +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 76, 0) + pagNum = pdfDoc->findPage(dstr); +-#else +- pagNum = pdfDoc->findPage(dstr.num, dstr.gen); +-#endif + } + else + pagNum = dst->getPageNum(); +@@ -485,11 +475,7 @@ bool SlaOutputDev::handleLinkAnnot(Annot* annota, double xCoor, double yCoor, do + POPPLER_CONST GooString *ndst = gto->getNamedDest(); + if (ndst) + { +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) + std::unique_ptr dstn = pdfDoc->findDest(ndst); +-#else +- LinkDest *dstn = pdfDoc->findDest(ndst); +-#endif + if (dstn) + { + if (dstn->getKind() == destXYZ) +@@ -497,11 +483,7 @@ bool SlaOutputDev::handleLinkAnnot(Annot* annota, double xCoor, double yCoor, do + if (dstn->isPageRef()) + { + Ref dstr = dstn->getPageRef(); +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 76, 0) + pagNum = pdfDoc->findPage(dstr); +-#else +- pagNum = pdfDoc->findPage(dstr.num, dstr.gen); +-#endif + } + else + pagNum = dstn->getPageNum(); +@@ -533,11 +515,7 @@ bool SlaOutputDev::handleLinkAnnot(Annot* annota, double xCoor, double yCoor, do + POPPLER_CONST GooString *ndst = gto->getNamedDest(); + if (ndst) + { +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) + std::unique_ptr dstn = pdfDoc->findDest(ndst); +-#else +- LinkDest *dstn = pdfDoc->findDest(ndst); +-#endif + if (dstn) + { + if (dstn->getKind() == destXYZ) +@@ -985,11 +963,7 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano) + if (dst->isPageRef()) + { + Ref dstr = dst->getPageRef(); +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 76, 0) + pagNum = pdfDoc->findPage(dstr); +-#else +- pagNum = pdfDoc->findPage(dstr.num, dstr.gen); +-#endif + } + else + pagNum = dst->getPageNum(); +@@ -1005,11 +979,7 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano) + POPPLER_CONST GooString *ndst = gto->getNamedDest(); + if (ndst) + { +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) + std::unique_ptr dstn = pdfDoc->findDest(ndst); +-#else +- LinkDest *dstn = pdfDoc->findDest(ndst); +-#endif + if (dstn) + { + if (dstn->getKind() == destXYZ) +@@ -1017,11 +987,7 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano) + if (dstn->isPageRef()) + { + Ref dstr = dstn->getPageRef(); +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 76, 0) + pagNum = pdfDoc->findPage(dstr); +-#else +- pagNum = pdfDoc->findPage(dstr.num, dstr.gen); +-#endif + } + else + pagNum = dstn->getPageNum(); +@@ -1061,11 +1027,7 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano) + POPPLER_CONST GooString *ndst = gto->getNamedDest(); + if (ndst) + { +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) + std::unique_ptr dstn = pdfDoc->findDest(ndst); +-#else +- LinkDest *dstn = pdfDoc->findDest(ndst); +-#endif + if (dstn) + { + if (dstn->getKind() == destXYZ) +@@ -1139,143 +1101,91 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano) + { + if (Aact->getKind() == actionJavaScript) + { +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) + LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); +-#else +- LinkJavaScript *jsa = (LinkJavaScript*) Aact; +-#endif + if (jsa->isOk()) + { + ite->annotation().setD_act(UnicodeParsedString(jsa->getScript())); + ite->annotation().setAAact(true); + } + } +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) + Aact.reset(); +-#else +- Aact = nullptr; +-#endif + } + Aact = SC_getAdditionalAction("E", ano); + if (Aact) + { + if (Aact->getKind() == actionJavaScript) + { +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) + LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); +-#else +- LinkJavaScript *jsa = (LinkJavaScript*) Aact; +-#endif + if (jsa->isOk()) + { + ite->annotation().setE_act(UnicodeParsedString(jsa->getScript())); + ite->annotation().setAAact(true); + } + } +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) + Aact.reset(); +-#else +- Aact = nullptr; +-#endif + } + Aact = SC_getAdditionalAction("X", ano); + if (Aact) + { + if (Aact->getKind() == actionJavaScript) + { +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) + LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); +-#else +- LinkJavaScript *jsa = (LinkJavaScript*) Aact; +-#endif + if (jsa->isOk()) + { + ite->annotation().setX_act(UnicodeParsedString(jsa->getScript())); + ite->annotation().setAAact(true); + } + } +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) + Aact.reset(); +-#else +- Aact = nullptr; +-#endif + } + Aact = SC_getAdditionalAction("Fo", ano); + if (Aact) + { + if (Aact->getKind() == actionJavaScript) + { +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) + LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); +-#else +- LinkJavaScript *jsa = (LinkJavaScript*) Aact; +-#endif + if (jsa->isOk()) + { + ite->annotation().setFo_act(UnicodeParsedString(jsa->getScript())); + ite->annotation().setAAact(true); + } + } +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) + Aact.reset(); +-#else +- Aact = nullptr; +-#endif + } + Aact = SC_getAdditionalAction("Bl", ano); + if (Aact) + { + if (Aact->getKind() == actionJavaScript) + { +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) + LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); +-#else +- LinkJavaScript *jsa = (LinkJavaScript*) Aact; +-#endif + if (jsa->isOk()) + { + ite->annotation().setBl_act(UnicodeParsedString(jsa->getScript())); + ite->annotation().setAAact(true); + } + } +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) + Aact.reset(); +-#else +- Aact = nullptr; +-#endif + } + Aact = SC_getAdditionalAction("C", ano); + if (Aact) + { + if (Aact->getKind() == actionJavaScript) + { +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) + LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); +-#else +- LinkJavaScript *jsa = (LinkJavaScript*) Aact; +-#endif + if (jsa->isOk()) + { + ite->annotation().setC_act(UnicodeParsedString(jsa->getScript())); + ite->annotation().setAAact(true); + } + } +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) + Aact.reset(); +-#else +- Aact = nullptr; +-#endif + } + Aact = SC_getAdditionalAction("F", ano); + if (Aact) + { + if (Aact->getKind() == actionJavaScript) + { +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) + LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); +-#else +- LinkJavaScript *jsa = (LinkJavaScript*) Aact; +-#endif + if (jsa->isOk()) + { + ite->annotation().setF_act(UnicodeParsedString(jsa->getScript())); +@@ -1283,22 +1193,14 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano) + ite->annotation().setFormat(5); + } + } +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) + Aact.reset(); +-#else +- Aact = nullptr; +-#endif + } + Aact = SC_getAdditionalAction("K", ano); + if (Aact) + { + if (Aact->getKind() == actionJavaScript) + { +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) + LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); +-#else +- LinkJavaScript *jsa = (LinkJavaScript*) Aact; +-#endif + if (jsa->isOk()) + { + ite->annotation().setK_act(UnicodeParsedString(jsa->getScript())); +@@ -1306,33 +1208,21 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano) + ite->annotation().setFormat(5); + } + } +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) + Aact.reset(); +-#else +- Aact = nullptr; +-#endif + } + Aact = SC_getAdditionalAction("V", ano); + if (Aact) + { + if (Aact->getKind() == actionJavaScript) + { +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) + LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); +-#else +- LinkJavaScript *jsa = (LinkJavaScript*) Aact; +-#endif + if (jsa->isOk()) + { + ite->annotation().setV_act(UnicodeParsedString(jsa->getScript())); + ite->annotation().setAAact(true); + } + } +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) + Aact.reset(); +-#else +- Aact = nullptr; +-#endif + } + } + +@@ -1342,11 +1232,7 @@ void SlaOutputDev::startDoc(PDFDoc *doc, XRef *xrefA, Catalog *catA) + catalog = catA; + pdfDoc = doc; + updateGUICounter = 0; +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 84, 0) + m_fontEngine = new SplashFontEngine(true, false, false, true); +-#else +- m_fontEngine = new SplashFontEngine(globalParams->getEnableFreeType(), false, false, true); +-#endif + } + + void SlaOutputDev::startPage(int pageNum, GfxState *, XRef *) +diff --git a/scribus/plugins/import/pdf/slaoutput.h b/scribus/plugins/import/pdf/slaoutput.h +index 02e538253..601e28745 100644 +--- a/scribus/plugins/import/pdf/slaoutput.h ++++ b/scribus/plugins/import/pdf/slaoutput.h +@@ -30,9 +30,6 @@ for which a new license (GPL+exception) is in place. + #include "selection.h" + #include "vgradient.h" + +-#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 73, 0) +-#include +-#endif + #include + #include + #include +@@ -163,11 +160,7 @@ public: + virtual ~SlaOutputDev(); + + LinkAction* SC_getAction(AnnotWidget *ano); +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) + std::unique_ptr SC_getAdditionalAction(const char *key, AnnotWidget *ano); +-#else +- LinkAction* SC_getAdditionalAction(const char *key, AnnotWidget *ano); +-#endif + static GBool annotations_callback(Annot *annota, void *user_data); + bool handleTextAnnot(Annot* annota, double xCoor, double yCoor, double width, double height); + bool handleLinkAnnot(Annot* annota, double xCoor, double yCoor, double width, double height); +-- +2.35.1 + diff --git a/0001-Small-update-vs-latest-code-in-poppler.patch b/0001-Small-update-vs-latest-code-in-poppler.patch new file mode 100644 index 0000000..8dc5f3e --- /dev/null +++ b/0001-Small-update-vs-latest-code-in-poppler.patch @@ -0,0 +1,31 @@ +From 0ac8654a468b077fd1c736f4c6245435efd70d13 Mon Sep 17 00:00:00 2001 +From: jghali +Date: Thu, 3 Feb 2022 19:46:13 +0000 +Subject: [PATCH] Small update vs latest code in poppler + +git-svn-id: svn://scribus.net/trunk/Scribus@24885 11d20701-8431-0410-a711-e3c959e3b870 +--- + scribus/plugins/import/pdf/slaoutput.cpp | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/scribus/plugins/import/pdf/slaoutput.cpp b/scribus/plugins/import/pdf/slaoutput.cpp +index 3650c96f5..a6f4e00fa 100644 +--- a/scribus/plugins/import/pdf/slaoutput.cpp ++++ b/scribus/plugins/import/pdf/slaoutput.cpp +@@ -3072,10 +3072,10 @@ void SlaOutputDev::updateFont(GfxState *state) + delete id; + else + { +- if (!(fontLoc = gfxFont->locateFont(xref, nullptr))) ++ fontLoc = gfxFont->locateFont((xref) ? xref : pdfDoc->getXRef(), nullptr); ++ if (!fontLoc) + { +- error(errSyntaxError, -1, "Couldn't find a font for '{0:s}'", +- gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); ++ error(errSyntaxError, -1, "Couldn't find a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); + goto err2; + } + +-- +2.35.1 + diff --git a/scribus.changes b/scribus.changes index 61f2c50..12cfab0 100644 --- a/scribus.changes +++ b/scribus.changes @@ -1,3 +1,13 @@ +------------------------------------------------------------------- +Fri Mar 4 08:40:27 UTC 2022 - Christophe Giboudeaux + +- Add upstream changes: + * 0001-16734-Build-break-with-poppler-22.2.0.patch + * 0001-Small-update-vs-latest-code-in-poppler.patch + * 0001-16764-Build-break-with-poppler-22.03.0.patch + * 0001-Enforce-poppler-version-0.86.0.patch + * 0001-16764-Better-patch-avoid-a-memory-leak.patch + ------------------------------------------------------------------- Mon Jan 24 12:49:07 UTC 2022 - Paolo Stivanin diff --git a/scribus.spec b/scribus.spec index 79a7141..accac4d 100644 --- a/scribus.spec +++ b/scribus.spec @@ -29,6 +29,16 @@ Source0: %{name}-%{version}.tar.xz Source1: %{name}-%{version}.tar.xz.asc # PATCH-FIX-OPENSUSE Patch0: 0001-Make-sure-information-displayed-on-the-about-window-.patch +# PATCH-FIX-UPSTREAM +Patch1: 0001-16734-Build-break-with-poppler-22.2.0.patch +# PATCH-FIX-UPSTREAM +Patch2: 0001-Small-update-vs-latest-code-in-poppler.patch +# PATCH-FIX-UPSTREAM +Patch3: 0001-16764-Build-break-with-poppler-22.03.0.patch +# PATCH-FIX-UPSTREAM +Patch4: 0001-Enforce-poppler-version-0.86.0.patch +# PATCH-FIX-UPSTREAM +Patch5: 0001-16764-Better-patch-avoid-a-memory-leak.patch BuildRequires: cmake >= 3.14.0 BuildRequires: cups-devel BuildRequires: dos2unix