Author: jghali
Date: Thu Mar  8 17:51:55 2018
New Revision: 22425

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=22425
Log:
#15185: Nested Bookmarks fail to export properly to PDF

Modified:
    trunk/Scribus/scribus/pdflib_core.cpp
    trunk/Scribus/scribus/pdfwriter.h

Modified: trunk/Scribus/scribus/pdflib_core.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22425&path=/trunk/Scribus/scribus/pdflib_core.cpp
==============================================================================
--- trunk/Scribus/scribus/pdflib_core.cpp       (original)
+++ trunk/Scribus/scribus/pdflib_core.cpp       Thu Mar  8 17:51:55 2018
@@ -10922,23 +10922,22 @@
 {
        if (writer.OutlinesObj == 0)
                return;
-
-       BookMItem* ip;
-       QByteArray Inhal = "";
-       QMap<int,QByteArray> Inha;
+       
+       QByteArray Inhal;
+       QMap<int, QByteArray> Inha;
        if ((Bvie->topLevelItemCount() != 0) && (Options.Bookmarks) && 
(BookMinUse))
        {
+               BookMItem* ip = (BookMItem*) Bvie->topLevelItem(0);
+               PdfId Basis = writer.objectCounter() - 1;
                Outlines.Count = Bvie->topLevelItemCount();
-               PdfId Basis = writer.reserveObjects(Outlines.Count) - 1;
-               ip = (BookMItem*)Bvie->topLevelItem(0);
-               Outlines.First = ip->ItemNr+Basis;
-               Outlines.Last  = ((BookMItem*) 
Bvie->topLevelItem(Outlines.Count - 1))->ItemNr+Basis;
+               Outlines.First = ip->ItemNr + Basis;
+               Outlines.Last  = ((BookMItem*) 
Bvie->topLevelItem(Outlines.Count - 1))->ItemNr + Basis;
                QTreeWidgetItemIterator it(Bvie);
                while (*it)
                {
                        ip = (BookMItem*)(*it);
                        QString encText = ip->text(0);
-                       Inhal  = ""; //Pdf::toPdf(ip->ItemNr+Basis)+ " 0 obj\n";
+                       Inhal.clear();
                        Inhal += "<<\n/Title " + EncStringUTF16(encText, 
ip->ItemNr+Basis) + "\n";
                        if (ip->Pare == 0)
                                Inhal += "/Parent 3 0 R\n";
@@ -10970,6 +10969,7 @@
                        ++it;
                }
                QMap<int,QByteArray> ::ConstIterator contentIt;
+               writer.reserveObjects(Inha.count());
                for (contentIt = Inha.begin(); contentIt != Inha.end(); 
++contentIt)
                {
                        int itemNr = contentIt.key();

Modified: trunk/Scribus/scribus/pdfwriter.h
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22425&path=/trunk/Scribus/scribus/pdfwriter.h
==============================================================================
--- trunk/Scribus/scribus/pdfwriter.h   (original)
+++ trunk/Scribus/scribus/pdfwriter.h   Thu Mar  8 17:51:55 2018
@@ -184,6 +184,7 @@
        void write(const PdfFont font);
 
        // objects
+       PdfId objectCounter() const { return m_ObjCounter; }
        PdfId reserveObjects(unsigned int n);
        
        PdfId newObject() { return reserveObjects(1); }


_______________________________________________
scribus-commit mailing list
[email protected]
http://lists.scribus.net/mailman/listinfo/scribus-commit

Reply via email to