Hello,
Our Dev team is looking into this issue now. We will keep you informed once there is any progress. Thanks for your patience.
Sincerely,
Lisa
E-iceblue support team
//load original pdf
PdfDocument document = new PdfDocument();
document.LoadFromFile(@"TST_BookMark_original.pdf");
//create a new pdf
PdfDocument newPdf = new PdfDocument();
foreach (PdfPageBase page in document.Pages)
{
PdfPageBase newPage;
if (page.Rotation == PdfPageRotateAngle.RotateAngle90)
newPage = newPdf.Pages.Add(new SizeF(page.Size.Height, page.Size.Width), new PdfMargins(0));
else if (page.Rotation == PdfPageRotateAngle.RotateAngle270)
newPage = newPdf.Pages.Add(new SizeF(page.Size.Height, page.Size.Width), new PdfMargins(0));
else
newPage = newPdf.Pages.Add(page.Size, new PdfMargins(0));
page.CreateTemplate().Draw(newPage, new PointF(0, 0));
//get bookmarks from original pdf
var bms = document.Bookmarks;
for (int w = 0; w < bms.Count; w++)
{
//Add parent bookmark
PdfDestination vendorBookmarkDest = bms[w].Destination;
if (vendorBookmarkDest.Page == page)
{
vendorBookmarkDest.Page = newPage;
PdfBookmark vendorBookmark = newPdf.Bookmarks.Add(bms[w].Title);
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;
partBookmarkDest.Page = newPage;
PdfBookmark partBookmark = vendorBookmark.Add(bms[w][j].Title);
partBookmark.Color = bms[w][j].Color;
partBookmark.DisplayStyle = bms[w][j].DisplayStyle;
partBookmark.Action = new PdfGoToAction(partBookmarkDest);
}
}
}
}
newPdf.SaveToFile(@"final.pdf", Spire.Pdf.FileFormat.PDF); static void Main(string[] args)
{
PdfDocument document = new PdfDocument();
document.LoadFromFile(@"Template_BeforeSpirePDF.pdf");
PdfDocument newPdf = new PdfDocument();
Dictionary<PdfBookmark, PdfDestination> allBookmarks = new Dictionary<PdfBookmark, PdfDestination>();
var bms = document.Bookmarks;
for (int w = 0; w < bms.Count; w++)
{
PdfDestination vendorBookmarkDest = bms[w].Destination;
PdfBookmark vendorBookmark = newPdf.Bookmarks.Add(bms[w].Title);
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);
}
}
foreach (PdfPageBase page in document.Pages)
{
PdfPageBase newPage;
if (page.Rotation == PdfPageRotateAngle.RotateAngle90)
newPage = newPdf.Pages.Add(new SizeF(page.Size.Height, page.Size.Width), new PdfMargins(0));
else if (page.Rotation == PdfPageRotateAngle.RotateAngle270)
newPage = newPdf.Pages.Add(new SizeF(page.Size.Height, page.Size.Width), new PdfMargins(0));
else
newPage = newPdf.Pages.Add(page.Size, new PdfMargins(0));
page.CreateTemplate().Draw(newPage, new PointF(0, 0));
foreach (KeyValuePair<PdfBookmark, PdfDestination> kv in allBookmarks)
{
if (kv.Value.Page == page)
kv.Value.Page = newPage;
}
}
newPdf.SaveToFile("After.pdf", FileFormat.PDF);
}