iTextSharp - Использование PDFAction.GotoLocalPage в объединенном PDF

Я написал некоторый код, который объединяет несколько PDF-файлов в один PDF-файл, который затем отображается в MemoryStream. Это прекрасно работает. Что мне нужно сделать, это добавить оглавление в конец файла со ссылками на начало каждого из отдельных PDF-файлов. Я планировал сделать это с помощью действия GotoLocalPage, которое имеет опцию для номеров страниц, но, похоже, не работает. Если я изменю действие на код, приведенный ниже, на один из предварительно заданных, например PDFAction.FIRSTPAGE, он будет работать нормально. Разве это не работает, потому что я использую объект PDFCopy для параметра записи GotoLocalPage?

Document mergedDoc = new Document();
MemoryStream ms = new MemoryStream();
PdfCopy copy = new PdfCopy(mergedDoc, ms);
mergedDoc.Open();

MemoryStream tocMS = new MemoryStream();
Document tocDoc = null;
PdfWriter tocWriter = null;

for (int i = 0; i < filesToMerge.Length; i++)
{
     string filename = filesToMerge[i];

     PdfReader reader = new PdfReader(filename);
     copy.AddDocument(reader);

     // Initialise TOC document based off first file
     if (i == 0)
     {
          tocDoc = new Document(reader.GetPageSizeWithRotation(1));
          tocWriter = PdfWriter.GetInstance(tocDoc, tocMS);
          tocDoc.Open();
     }

     // Create link for TOC, added random number of 3 for now
     Chunk link = new Chunk(filename);
     PdfAction action = PdfAction.GotoLocalPage(3, new PdfDestination(PdfDestination.FIT), copy);
     link.SetAction(action);
     tocDoc.Add(new Paragraph(link));
}

// Add TOC to end of merged PDF
tocDoc.Close();
PdfReader tocReader = new PdfReader(tocMS.ToArray());
copy.AddDocument(tocReader);

copy.Close();

displayPDF(ms.ToArray());

Я предполагаю, что альтернативой будет ссылка на именованный элемент (вместо номера страницы), но я не вижу, как добавить «невидимый» элемент в начало каждого файла перед добавлением в объединенный документ?

Ответы на вопрос(1)

Ваш ответ на вопрос