如何禁用 mailto:单击文件名之类的电子邮件时?

How to disable mailto: when clicking an Email like filename?

考虑这个简单的代码块,它使用指向用户文件系统中文件的 Web 超链接重现简单的文本。

Document doc = new Document();
Page page1 = doc.Pages.Add();
TextFragment textFragment = new TextFragment();            
TextSegment textSegment = new TextSegment("foo@boo.net");
textSegment.Hyperlink = new Aspose.Pdf.WebHyperlink("Images/foo@boo.net");
textFragment.Segments.Add(textSegment);
page1.Paragraphs.Add(textFragment);
doc.Save(dataDir);

文件 namefoo@boo.net 因此 PDF 将其识别为电子邮件并自动添加 mailto: 前缀,因此无需打开文件(使用某些默认程序)正在使用 Outlook 打开。

这个问题之后是我关于这个问题的,在尝试使用 new Aspose.Pdf.FileHyperlink("Images/foo@boo.net"); 等多次尝试之后,但它不会打开任何文件,无论其名称是什么。

是否可以添加带有有效邮件文本的 TextSegment,这样 PDF reader 就不会添加 mailto: 前缀?

例如(在Chrome中测试):

通过使用 zero-width-whitespace (definition) 转义文本解决,例如:

internal static string SafeEscapeMailtoPrefix(this string value)
{
    if (string.IsNullOrEmpty(value))
        return value;
    return value.Replace("@", "\u200B@");
}

所以 TextSegment 会是这样的:

TextSegment textSegment = newTextSegment("foo@boo.net".SafeEscapeMailtoPrefix());