When using PDFsharp (v1.5x) to concatenate multiple PDF files, hyperlinks that exist in the source files are lost.
The links need to be manually recreated in the composite file. Run this method each time you add a new PdfPage object to the target document.
private void FixWebLinkAnnotations(PdfPage page, PdfDocument doc, int docPage)
{
for (var i = 0; i < page.Annotations.Count; i++)
{
var annot = page.Annotations[i];
var subType = annot.Elements.GetString(PdfAnnotation.Keys.Subtype);
if (subType == "/Link")
{
var dest = annot.Elements.GetDictionary(PdfAnnotation.Keys.A);
var rect = annot.Elements.GetRectangle(PdfAnnotation.Keys.Rect);
if (dest != null && rect != null && dest.Elements.Count > 0)
{
var uri = dest.Elements.GetString("/URI");
for (var p = 0; p < doc.PageCount; p++)
{
if (p == docPage && uri != null)
{
doc.Pages[docPage].Annotations.Add(PdfLinkAnnotation.CreateWebLink(rect, uri));
}
}
}
}
}
}
This code was adapted from https://forum.pdfsharp.net/viewtopic.php?f=3&t=3382 to work with hyperlinks rather than document references.