PDF actions can refer to external files by using either absolute or relative file paths. While using the relative path in action, the file can be moved into a different location. In Spire.PDF, we can use the PdfLaunchAction to link to files with relative paths.
Code snippet:
Step 1: Create a new PDF document and add a page to it.
PdfDocument document = new PdfDocument(); PdfPageBase page = document.Pages.Add();
Step 2: Create a PDF launch action that refers to an external file with relative path.
PdfLaunchAction launchAction = new PdfLaunchAction(@"..\..\test.txt", PdfFilePathType.Relative);
Step 3: Create a PDF action annotation with the launch action. Add the annotation to the page.
string text = "Click here to open file with relative path";
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 13f));
RectangleF rect = new RectangleF(50, 50, 230, 15);
page.Canvas.DrawString(text, font, PdfBrushes.ForestGreen, rect);
PdfActionAnnotation annotation = new PdfActionAnnotation(rect, launchAction);
(page as PdfNewPage).Annotations.Add(annotation);
Step 4: Save the document.
document.SaveToFile("RelativeFilePath.pdf");
Screenshot:

Full code:
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Actions;
using Spire.Pdf.Annotations;
using Spire.Pdf.Graphics;
namespace Link_to_files_with_relative_paths
{
class Program
{
static void Main(string[] args)
{
//Create a new PDF document and add a page to it
PdfDocument document = new PdfDocument();
PdfPageBase page = document.Pages.Add();
//Create a PDF Launch Action
PdfLaunchAction launchAction = new PdfLaunchAction(@"..\..\test.txt", PdfFilePathType.Relative);
//Create a PDF Action Annotation with the PDF Launch Action
string text = "Click here to open file with relative path";
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 13f));
RectangleF rect = new RectangleF(50, 50, 230, 15);
page.Canvas.DrawString(text, font, PdfBrushes.ForestGreen, rect);
PdfActionAnnotation annotation = new PdfActionAnnotation(rect, launchAction);
//Add the PDF Action Annotation to page
(page as PdfNewPage).Annotations.Add(annotation);
//Save and close the document
document.SaveToFile("RelativeFilePath.pdf");
document.Close();
}
}
}
