Package: scribus Severity: normal Tags: patch X-Debbugs-Cc: nathan.teodo...@canonical.com
Dear Maintainer, Since Poppler 22.06 made its way into experimental, Scribus will need compatibility changes that are already in upstream to build. I cherry-picked the relevant changes in the attached patches. However, although they apply fine with `patch` on the .orig, the patches won't apply with `debuild`, and I couldn't figure out why. I'm hoping you will spot it faster than I. -- System Information: Debian Release: bookworm/sid APT prefers kinetic APT policy: (500, 'kinetic') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 5.15.0-33-generic (SMP w/8 CPU threads) Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE Locale: LANG=en_US.UTF-8, LC_CTYPE=pt_BR.UTF-8 (charmap=UTF-8), LANGUAGE not set Shell: /bin/sh linked to /usr/bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled Versions of packages scribus depends on: ii ghostscript 9.55.0~dfsg1-0ubuntu5 ii libc6 2.35-0ubuntu3 ii libcairo2 1.16.0-5ubuntu2 ii libcdr-0.1-1 0.1.6-2build3 ii libcups2 2.4.2-1ubuntu1 ii libfontconfig1 2.13.1-4.4ubuntu1 ii libfreehand-0.1-1 0.1.2-3build2 ii libfreetype6 2.12.1+dfsg-2 ii libgcc-s1 12.1.0-2ubuntu1 ii libgraphicsmagick-q16-3 1.4+really1.3.38-1 ii libharfbuzz-icu0 2.7.4-1ubuntu4 ii libharfbuzz0b 2.7.4-1ubuntu4 ii libhunspell-1.7-0 1.7.0-4build1 ii libicu71 71.1-3 ii libjpeg8 8c-2ubuntu10 ii liblcms2-2 2.12~rc1-2build2 ii libmspub-0.1-1 0.1.4-3build4 pn libopenscenegraph161 <none> ii libopenthreads21 3.6.5+dfsg1-7build3 ii libpagemaker-0.0-0 0.0.4-1build3 ii libpng16-16 1.6.37-5 ii libpodofo0.9.8 0.9.8+dfsg-2 pn libpoppler118 <none> ii libpython3.10 3.10.5-1 ii libqt5core5a 5.15.4+dfsg-2 ii libqt5gui5 5.15.4+dfsg-2 ii libqt5network5 5.15.4+dfsg-2 ii libqt5opengl5 5.15.4+dfsg-2 ii libqt5printsupport5 5.15.4+dfsg-2 ii libqt5widgets5 5.15.4+dfsg-2 ii libqt5xml5 5.15.4+dfsg-2 ii libqxp-0.0-0 0.0.2-1build5 ii librevenge-0.0-0 0.0.4-6ubuntu7 ii libstdc++6 12.1.0-2ubuntu1 ii libtiff5 4.4.0~rc1-1 ii libvisio-0.1-1 0.1.7-1build6 ii libxml2 2.9.14+dfsg-1 ii libzmf-0.0-0 0.0.2-1build8 pn scribus-data <none> ii zlib1g 1:1.2.11.dfsg-2ubuntu9 Versions of packages scribus recommends: ii cups-bsd 2.4.2-1ubuntu1 ii fonts-dejavu 2.37-2build1 ii fonts-liberation 1:1.07.4-11 ii hyphen-en-us [hyphen-hyphenation-patterns] 2.8.8-7build2 pn icc-profiles-free <none> ii xfonts-scalable 1:1.0.3-1.2ubuntu1 Versions of packages scribus suggests: pn icc-profiles <none> pn scribus-doc <none> pn scribus-template <none> ii texlive-latex-recommended 2021.20220204-1
Index: scribus-1.5.8+dfsg/scribus/plugins/import/pdf/importpdf.cpp =================================================================== --- scribus-1.5.8+dfsg.orig/scribus/plugins/import/pdf/importpdf.cpp +++ scribus-1.5.8+dfsg/scribus/plugins/import/pdf/importpdf.cpp @@ -90,7 +90,11 @@ QImage PdfPlug::readThumbnail(const QStr #endif globalParams->setErrQuiet(gTrue); +#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 3, 0) + PDFDoc pdfDoc{ std::make_unique<GooString>(fname) }; +#else PDFDoc pdfDoc{fname, nullptr, nullptr, nullptr}; +#endif if (!pdfDoc.isOk() || pdfDoc.getErrorCode() == errEncrypted) return QImage(); @@ -343,7 +347,11 @@ bool PdfPlug::convert(const QString& fn) globalParams->setErrQuiet(gTrue); // globalParams->setPrintCommands(gTrue); QList<OptionalContentGroup*> ocgGroups; +#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 3, 0) + auto pdfDoc = std::make_unique<PDFDoc>(std::make_unique<GooString>(fname)); +#else auto pdfDoc = std::unique_ptr<PDFDoc>(new PDFDoc(fname, nullptr, nullptr, nullptr)); +#endif if (pdfDoc) { if (pdfDoc->getErrorCode() == errEncrypted) @@ -362,8 +370,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<GooString> userPW(std::in_place, text.toLocal8Bit().data()); + pdfDoc.reset(new PDFDoc(std::make_unique<GooString>(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))
diff --git a/scribus/plugins/import/pdf/slaoutput.cpp b/scribus/plugins/import/pdf/slaoutput.cpp index e20a81f99e..5626fe3477 100644 --- a/scribus/plugins/import/pdf/slaoutput.cpp +++ b/scribus/plugins/import/pdf/slaoutput.cpp @@ -174,8 +174,13 @@ void AnoOutputDev::drawString(GfxState *state, POPPLER_CONST GooString *s) int shade = 100; currColorText = getColor(state->getFillColorSpace(), state->getFillColor(), &shade); fontSize = state->getFontSize(); +#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 4, 0) + if (state->getFont() && state->getFont()->getName()) + fontName = new GooString(state->getFont()->getName().value()); +#else if (state->getFont()) fontName = state->getFont()->getName()->copy(); +#endif itemText = s->copy(); } @@ -357,7 +362,12 @@ std::unique_ptr<LinkAction> SlaOutputDev::SC_getAdditionalAction(const char *key GBool SlaOutputDev::annotations_callback(Annot *annota, void *user_data) { SlaOutputDev *dev = (SlaOutputDev*)user_data; +#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 4, 0) + const PDFRectangle& annotRect = annota->getRect();; + const PDFRectangle* box = &annotRect; +#else PDFRectangle *box = annota->getRect(); +#endif double xCoor = dev->m_doc->currentPage()->xOffset() + box->x1 - dev->cropOffsetX; double yCoor = dev->m_doc->currentPage()->yOffset() + dev->m_doc->currentPage()->height() - box->y2 + dev->cropOffsetY; double width = box->x2 - box->x1; @@ -684,7 +694,12 @@ bool SlaOutputDev::handleWidgetAnnot(Annot* annota, double xCoor, double yCoor, if (apa || !achar) { AnoOutputDev *annotOutDev = new AnoOutputDev(m_doc, m_importedColors); +#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 4, 0) + const PDFRectangle& annotaRect = annota->getRect(); + Gfx* gfx = new Gfx(pdfDoc, annotOutDev, pdfDoc->getPage(m_actPage)->getResourceDict(), &annotaRect, nullptr); +#else Gfx *gfx = new Gfx(pdfDoc, annotOutDev, pdfDoc->getPage(m_actPage)->getResourceDict(), annota->getRect(), nullptr); +#endif ano->draw(gfx, false); if (!bgFound) m_currColorFill = annotOutDev->currColorFill; @@ -2916,15 +3031,21 @@ void SlaOutputDev::markPoint(POPPLER_CONST char *name, Dict *properties) void SlaOutputDev::updateFont(GfxState *state) { - GfxFont *gfxFont; -#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 2, 0) +#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 4, 0) + std::optional<GfxFontLoc> fontLoc; + std::string fileName; + std::unique_ptr<FoFiTrueType> ff; + std::optional<std::vector<unsigned char>> tmpBuf; +#elif POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 2, 0) std::optional<GfxFontLoc> fontLoc; const GooString * fileName = nullptr; std::unique_ptr<FoFiTrueType> ff; + char* tmpBuf = nullptr; #else GfxFontLoc * fontLoc = nullptr; GooString * fileName = nullptr; FoFiTrueType * ff = nullptr; + char* tmpBuf = nullptr; #endif GfxFontType fontType; SlaOutFontFileID *id; @@ -2943,7 +2963,11 @@ void SlaOutputDev::updateFont(GfxState *state) m_font = nullptr; - gfxFont = state->getFont(); +#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 4, 0) + GfxFont* gfxFont = state->getFont().get(); +#else + GfxFont* gfxFont = state->getFont(); +#endif if (!gfxFont) goto err1; @@ -2968,15 +2992,23 @@ void SlaOutputDev::updateFont(GfxState *state) if (fontLoc->locType == gfxFontLocEmbedded) { // if there is an embedded font, read it to memory - tmpBuf = gfxFont->readEmbFontFile(xref, &tmpBufLen); +#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 4, 0) + tmpBuf = gfxFont->readEmbFontFile((xref) ? xref : pdfDoc->getXRef()); if (! tmpBuf) goto err2; +#else + tmpBuf = gfxFont->readEmbFontFile(xref, &tmpBufLen); + if (!tmpBuf) + goto err2; +#endif // external font } else { // gfxFontLocExternal -#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 2, 0) +#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 4, 0) + fileName = fontLoc->path; +#elif POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 2, 0) fileName = fontLoc->pathAsGooString(); #else fileName = fontLoc->path; @@ -2985,52 +3017,54 @@ void SlaOutputDev::updateFont(GfxState *state) } fontsrc = new SplashFontSrc; +#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 4, 0) + if (!fileName.empty()) + fontsrc->setFile(fileName); + else + fontsrc->setBuf(std::move(tmpBuf.value())); +#else if (fileName) fontsrc->setFile(fileName, gFalse); else fontsrc->setBuf(tmpBuf, tmpBufLen, gTrue); +#endif // load the font file switch (fontType) { case fontType1: - if (!(fontFile = m_fontEngine->loadType1Font( - id, - fontsrc, - (const char **)((Gfx8BitFont *) gfxFont)->getEncoding()))) + if (!(fontFile = m_fontEngine->loadType1Font(id, fontsrc, (const char **)((Gfx8BitFont *) gfxFont)->getEncoding()))) { - error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", - gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); + error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); goto err2; } break; case fontType1C: - if (!(fontFile = m_fontEngine->loadType1CFont( - id, - fontsrc, - (const char **)((Gfx8BitFont *) gfxFont)->getEncoding()))) + if (!(fontFile = m_fontEngine->loadType1CFont(id, fontsrc, (const char **)((Gfx8BitFont *) gfxFont)->getEncoding()))) { - error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", - gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); + error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); goto err2; } break; case fontType1COT: - if (!(fontFile = m_fontEngine->loadOpenTypeT1CFont( - id, - fontsrc, - (const char **)((Gfx8BitFont *) gfxFont)->getEncoding()))) + if (!(fontFile = m_fontEngine->loadOpenTypeT1CFont(id, fontsrc, (const char **)((Gfx8BitFont *) gfxFont)->getEncoding()))) { - error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", - gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); + error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); goto err2; } break; case fontTrueType: case fontTrueTypeOT: +#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 4, 0) + if (!fileName.empty()) + ff = FoFiTrueType::load(fileName.c_str()); + else + ff = FoFiTrueType::make(fontsrc->buf.data(), fontsrc->buf.size()); +#else if (fileName) ff = FoFiTrueType::load(fileName->getCString()); else ff = FoFiTrueType::make(tmpBuf, tmpBufLen); +#endif if (ff) { #if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 2, 0) @@ -3047,24 +3081,17 @@ void SlaOutputDev::updateFont(GfxState *state) codeToGID = nullptr; n = 0; } - if (!(fontFile = m_fontEngine->loadTrueTypeFont( - id, - fontsrc, - codeToGID, n))) + if (!(fontFile = m_fontEngine->loadTrueTypeFont(id, fontsrc, codeToGID, n))) { - error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", - gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); + error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); goto err2; } break; case fontCIDType0: case fontCIDType0C: - if (!(fontFile = m_fontEngine->loadCIDFont( - id, - fontsrc))) + if (!(fontFile = m_fontEngine->loadCIDFont(id, fontsrc))) { - error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", - gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); + error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); goto err2; } break; @@ -3080,10 +3107,7 @@ void SlaOutputDev::updateFont(GfxState *state) codeToGID = nullptr; n = 0; } - if (!(fontFile = m_fontEngine->loadOpenTypeCFFFont( - id, - fontsrc, - codeToGID, n))) + if (!(fontFile = m_fontEngine->loadOpenTypeCFFFont(id, fontsrc, codeToGID, n))) { error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); @@ -3105,10 +3129,17 @@ void SlaOutputDev::updateFont(GfxState *state) } else { +#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 4, 0) + if (!fileName.empty()) + ff = FoFiTrueType::load(fileName.c_str()); + else + ff = FoFiTrueType::make(fontsrc->buf.data(), fontsrc->buf.size()); +#else if (fileName) ff = FoFiTrueType::load(fileName->getCString()); else ff = FoFiTrueType::make(tmpBuf, tmpBufLen); +#endif if (! ff) goto err2; #if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 2, 0) @@ -3119,13 +3150,9 @@ void SlaOutputDev::updateFont(GfxState *state) delete ff; #endif } - if (!(fontFile = m_fontEngine->loadTrueTypeFont( - id, - fontsrc, - codeToGID, n, faceIndex))) + if (!(fontFile = m_fontEngine->loadTrueTypeFont(id, fontsrc, codeToGID, n, faceIndex))) { - error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", - gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); + error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); goto err2; } break; @@ -3269,9 +3296,15 @@ void SlaOutputDev::drawChar(GfxState* state, double x, double y, double dx, doub GBool SlaOutputDev::beginType3Char(GfxState *state, double x, double y, double dx, double dy, CharCode code, POPPLER_CONST_082 Unicode *u, int uLen) { // qDebug() << "beginType3Char"; +#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 4, 0) GfxFont *gfxFont; + if (!(gfxFont = state->getFont().get())) + return gTrue; +#else + GfxFont* gfxFont; if (!(gfxFont = state->getFont())) return gTrue; +#endif if (gfxFont->getType() != fontType3) return gTrue; F3Entry f3e;
Index: scribus-1.5.8+dfsg/cmake/modules/Findpoppler.cmake =================================================================== --- scribus-1.5.8+dfsg.orig/cmake/modules/Findpoppler.cmake +++ scribus-1.5.8+dfsg/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 Index: scribus-1.5.8+dfsg/scribus/plugins/import/pdf/importpdf.cpp =================================================================== --- scribus-1.5.8+dfsg.orig/scribus/plugins/import/pdf/importpdf.cpp +++ scribus-1.5.8+dfsg/scribus/plugins/import/pdf/importpdf.cpp @@ -75,20 +75,15 @@ PdfPlug::PdfPlug(ScribusDoc* doc, int fl 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<GlobalParams> 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<GooString>(fname) }; @@ -333,19 +328,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<GlobalParams> 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<OptionalContentGroup*> ocgGroups; #if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 3, 0) auto pdfDoc = std::make_unique<PDFDoc>(std::make_unique<GooString>(fname)); @@ -365,7 +356,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()); @@ -383,9 +374,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) @@ -495,7 +483,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) { @@ -507,25 +494,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) { @@ -537,19 +510,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 } } @@ -788,13 +748,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<LinkAction> 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; @@ -862,11 +817,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"; Index: scribus-1.5.8+dfsg/scribus/plugins/import/pdf/slaoutput.cpp =================================================================== --- scribus-1.5.8+dfsg.orig/scribus/plugins/import/pdf/slaoutput.cpp +++ scribus-1.5.8+dfsg/scribus/plugins/import/pdf/slaoutput.cpp @@ -332,15 +332,9 @@ LinkAction* SlaOutputDev::SC_getAction(A } /* Replacement for the crippled Poppler function LinkAction* AnnotWidget::getAdditionalAction(AdditionalActionsType type) */ -#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) std::unique_ptr<LinkAction> SlaOutputDev::SC_getAdditionalAction(const char *key, AnnotWidget *ano) { std::unique_ptr<LinkAction> 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 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 POPPLER_CONST GooString *ndst = gto->getNamedDest(); if (ndst) { -#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) std::unique_ptr<LinkDest> 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 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 POPPLER_CONST GooString *ndst = gto->getNamedDest(); if (ndst) { -#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) std::unique_ptr<LinkDest> dstn = pdfDoc->findDest(ndst); -#else - LinkDest *dstn = pdfDoc->findDest(ndst); -#endif if (dstn) { if (dstn->getKind() == destXYZ) @@ -985,11 +963,7 @@ void SlaOutputDev::handleActions(PageIte 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(PageIte POPPLER_CONST GooString *ndst = gto->getNamedDest(); if (ndst) { -#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) std::unique_ptr<LinkDest> dstn = pdfDoc->findDest(ndst); -#else - LinkDest *dstn = pdfDoc->findDest(ndst); -#endif if (dstn) { if (dstn->getKind() == destXYZ) @@ -1017,11 +987,7 @@ void SlaOutputDev::handleActions(PageIte 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(PageIte POPPLER_CONST GooString *ndst = gto->getNamedDest(); if (ndst) { -#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) std::unique_ptr<LinkDest> dstn = pdfDoc->findDest(ndst); -#else - LinkDest *dstn = pdfDoc->findDest(ndst); -#endif if (dstn) { if (dstn->getKind() == destXYZ) @@ -1139,143 +1101,91 @@ void SlaOutputDev::handleActions(PageIte { 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(PageIte 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(PageIte 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, 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 *) Index: scribus-1.5.8+dfsg/scribus/plugins/import/pdf/slaoutput.h =================================================================== --- scribus-1.5.8+dfsg.orig/scribus/plugins/import/pdf/slaoutput.h +++ scribus-1.5.8+dfsg/scribus/plugins/import/pdf/slaoutput.h @@ -30,9 +30,6 @@ for which a new license (GPL+exception) #include "selection.h" #include "vgradient.h" -#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 73, 0) -#include <poppler/goo/gtypes.h> -#endif #include <poppler/Object.h> #include <poppler/OutputDev.h> #include <poppler/Gfx.h> @@ -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<LinkAction> 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);
diff --git a/scribus/plugins/import/pdf/slaoutput.cpp b/scribus/plugins/import/pdf/slaoutput.cpp index 5894bf2ad6..3650c96f52 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 <memory> +#include <optional> +#endif + #include <poppler/GlobalParams.h> #include <poppler/poppler-config.h> #include <poppler/FileSpec.h> @@ -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<GfxFontLoc> fontLoc; + const GooString * fileName = nullptr; + std::unique_ptr<FoFiTrueType> 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();