Можно ли даже создать ссылку на файл внутри pdf с itext, которая будет работать в Microsoft Edge?
Если да, то как?
Сделав несколькоТесты показывают, что Edge не поддерживает относительные ссылки в документах PDF.
Он поддерживает абсолютные ссылки, хотя, учитывая полный URI, например,
chunk = new Chunk("Only ASCII chars in target. Full path.");
chunk.SetAnchor("file:///C:/Repo/GitHub/testarea/itext5/target/test-outputs/annotate/Attachments/1.png");
doc.Add(new Paragraph(chunk));
В отличие от других программ просмотра PDF (Adobe Reader, Chrome, ср. ваш предыдущий вопрос в этом контексте) не поддерживает кодировку URL специальных символов, таких как кириллические:
chunk = new Chunk("Cyrillic chars in target. URL-encoded. Full path. NOT WORKING");
chunk.SetAnchor("file:///C:/Repo/GitHub/testarea/itext5/target/test-outputs/annotate/" + WebUtility.UrlEncode("Вложения") + "/1.png");
doc.Add(new Paragraph(chunk));
Но этодействительно поддерживает специальные символы в кодировке UTF-8.Поскольку кодировка UTF-8 PdfString
является функцией PDF-2.0, а iText 5 не поддерживает PDF-2.0, нужно немного обмануть, чтобы вставить строки в кодировке UTF-8 здесь:
chunk = new Chunk("Cyrillic chars in target. Action manipulated. Full path.");
chunk.SetAnchor("XXX");
action = (PdfAction)chunk.Attributes[Chunk.ACTION];
action.Put(PdfName.URI, new PdfString(new UTF8Encoding().GetBytes("file:///C:/Repo/GitHub/testarea/itext5/target/test-outputs/annotate/Вложения/1.png")));
doc.Add(new Paragraph(chunk));
Проверено с краем 41.16299.666.0