我有以下功能来使用 PdfSharp 创建一个网络链接:
public static void AddWebLink(XGraphics gfx, PdfPage page, XFont font, string url, string text, int startX, int startY)
{
if (gfx == null)
throw new ArgumentNullException("gfx");
if (page == null)
throw new ArgumentNullException("page");
if (font == null)
throw new ArgumentNullException("font");
// Write out the text
gfx.DrawString(text, font, XBrushes.Blue, new PointF(startX, startY));
var stringSize = gfx.MeasureString(text, font);
// Create the linked area
// For some reason the Y of the rectangle needs to be startY minus the height
startY -= (int)stringSize.Height;
var rect = gfx.Transformer.WorldToDefaultPage(new XRect(startX, startY, stringSize.Width, stringSize.Height));
var pdfRect = new PdfRectangle(rect);
var annotation = page.AddWebLink(pdfRect, url);
annotation.Opacity = 0; // Try and prevent it from rendering a box around the link in some viewers
}
生成 PDF 后,在 Foxit Reader 中查看时一切正常:
但是,Adobe Acrobat Reader 10 和 11 在链接区域周围显示黑色细边框:
Acrobat http://dl.dropbox.com/u/6753359/acrobat-bad.PNG
不幸的是,由于 Acrobat Reader 更加标准,因此要求它必须看起来正确。
有人能告诉我为什么我的所有链接区域在 acrobat reader 中都有边框吗?
编辑:我试图使注释被
annotation.Opacity = 0
和不可见annotation.Color = XColor.FromArgb(255, 255, 255, 255);
。前者不起作用(边框仍然出现),后者使边框变为白色,这不是 100% 起作用,因为它会在某些文本行中产生奇怪的情况(例如切断 y、p 等底部的白线。 .)。