Spire.PDF is a professional PDF library applied to creating, writing, editing, handling and reading PDF files without any external dependencies. Get free and professional technical support for Spire.PDF for .NET, Java, Android, C++, Python.

Tue Jan 28, 2020 5:17 pm

Hi,

I'm getting error trying to add a note into the attached file. I figured out that what is causing the error is that the bookmark Level 1 and Level 2 has no action defined.

Code: Select all
//get bookmarks from original pdf
                var bms = document.Bookmarks;
                Dictionary<PdfBookmark, PdfDestination> allBookmarks = new Dictionary<PdfBookmark, PdfDestination>();

                //int j;

                for (int w = 0; w < bms.Count; w++)
                {
                    //Add parent bookmark
                    PdfBookmark vendorBookmark = newPdf.Bookmarks.Add(bms[w].Title);

                    try
                    {
                        PdfDestination vendorBookmarkDest = bms[w].Destination;
                        vendorBookmark.Action = new PdfGoToAction(vendorBookmarkDest);
                        allBookmarks.Add(vendorBookmark, vendorBookmarkDest);
                        vendorBookmark.Color = bms[w].Color;
                        vendorBookmark.DisplayStyle = bms[w].DisplayStyle;
                        for (int j = 0; j < bms[w].Count; j++)
                        {
                            //Add child bookmark
                            PdfDestination partBookmarkDest = bms[w][j].Destination;
                            PdfBookmark partBookmark = vendorBookmark.Add(bms[w][j].Title);
                            allBookmarks.Add(partBookmark, partBookmarkDest);
                            partBookmark.Color = bms[w][j].Color;
                            partBookmark.DisplayStyle = bms[w][j].DisplayStyle;
                            partBookmark.Action = new PdfGoToAction(partBookmarkDest);
                        }
                    }
                    catch
                    {
                        PdfDestination vendorBookmarkDest = new PdfDestination(document.Pages[3], new PointF(10, 10));
                        allBookmarks.Add(vendorBookmark, vendorBookmarkDest);
                        vendorBookmark.Color = bms[w].Color;
                        vendorBookmark.DisplayStyle = bms[w].DisplayStyle;
                        vendorBookmark.Action = new PdfGoToAction(vendorBookmarkDest);
                        for (int j = 0; j < bms[w].Count; j++)
                        {
                            //Add child bookmark
                            PdfDestination partBookmarkDest = bms[w][j].Destination;
                            PdfBookmark partBookmark = vendorBookmark.Add(bms[w][j].Title);
                            allBookmarks.Add(partBookmark, partBookmarkDest);
                            partBookmark.Color = bms[w][j].Color;
                            partBookmark.DisplayStyle = bms[w][j].DisplayStyle;
                            partBookmark.Action = new PdfGoToAction(partBookmarkDest);
                        }   
                    }
                }


Could you guys please help me to figure out what is going on?
Thank You

mferraro15@gmail.com
 
Posts: 57
Joined: Tue Mar 19, 2019 6:41 pm

Wed Jan 29, 2020 12:06 pm

Hello,

Thanks for your inquiry.
Since some bookmarks of your PDF are no destinations. You can add the following code to avoid the error.
Code: Select all
.....
if (vendorBookmarkDest != null)
{
    vendorBookmark.Action = new PdfGoToAction(vendorBookmarkDest);
}
......


Sincerely,
Lisa
E-iceblue support team
User avatar

Lisa.Li
 
Posts: 1261
Joined: Wed Apr 25, 2018 3:20 am

Wed Jan 29, 2020 1:57 pm

Hi,

Thanks for the reply, it works very well, but I have another problem, my code is not reaching level 3 in the indicators in other words the code is not returning all the children of the bookmark structure.
Thank You

mferraro15@gmail.com
 
Posts: 57
Joined: Tue Mar 19, 2019 6:41 pm

Thu Jan 30, 2020 8:41 am

Hello,

Thanks for your feedback.
Please add the following code snippet to copy the level3 bookmarks. If there is any question, just feel free to write back.
Code: Select all
......
for (int w = 0; w < bms.Count; w++)
{
    //Add parent bookmark
    PdfBookmark vendorBookmark = newPdf.Bookmarks.Add(bms[w].Title);

        PdfDestination vendorBookmarkDest = bms[w].Destination;
        if (vendorBookmarkDest != null)
        {
            vendorBookmark.Action = new PdfGoToAction(vendorBookmarkDest);
        }
        allBookmarks.Add(vendorBookmark, vendorBookmarkDest);
        vendorBookmark.Color = bms[w].Color;
        vendorBookmark.DisplayStyle = bms[w].DisplayStyle;
        for (int j = 0; j < bms[w].Count; j++)
        {
            //Add child bookmark
            PdfDestination partBookmarkDest = bms[w][j].Destination;
            PdfBookmark partBookmark = vendorBookmark.Add(bms[w][j].Title);
            allBookmarks.Add(partBookmark, partBookmarkDest);
            partBookmark.Color = bms[w][j].Color;
            partBookmark.DisplayStyle = bms[w][j].DisplayStyle;
        if (vendorBookmarkDest != null)
        {
            partBookmark.Action = new PdfGoToAction(partBookmarkDest);
        }
                for (int m = 0; m< bms[w][j].Count; m++)
                {
                    //Add level3 bookmark
                    PdfDestination level3BookmarkDest = bms[w][j][m].Destination;
                    PdfBookmark level3partBookmark = vendorBookmark.Add(bms[w][j][m].Title);
                    allBookmarks.Add(level3partBookmark, level3BookmarkDest);
                    level3partBookmark.Color = bms[w][j][m].Color;
                    level3partBookmark.DisplayStyle = bms[w][j][m].DisplayStyle;
                    if (level3BookmarkDest != null)
                    {
                        partBookmark.Action = new PdfGoToAction(level3BookmarkDest);
                    }
                }
......
      }
}

Sincerely,
Lisa
E-iceblue support team
User avatar

Lisa.Li
 
Posts: 1261
Joined: Wed Apr 25, 2018 3:20 am

Fri Jan 31, 2020 12:57 pm

Hi,

Thanks fro the reply. It works perfect.
Thank You

mferraro15@gmail.com
 
Posts: 57
Joined: Tue Mar 19, 2019 6:41 pm

Mon Feb 03, 2020 1:55 am

Hello,

Thanks for your feedback.
If you have other questions, please do not hesitate to contact us. Wish you all the best!

Sincerely,
Lisa
E-iceblue support team
User avatar

Lisa.Li
 
Posts: 1261
Joined: Wed Apr 25, 2018 3:20 am

Return to Spire.PDF