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?
Login to view the files attached to this post.
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
-
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
-
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
-
Lisa.Li
-
- Posts: 1261
- Joined: Wed Apr 25, 2018 3:20 am