为什么PdfSharp在Web链接上创建边框?

时间:2012-11-02 13:31:19

标签: c# pdfsharp

我有以下功能使用PdfSharp创建一个weblink:

    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 Image

但是,Adobe Acrobat Reader 10和11在链接区域周围显示黑色边框:

Acrobat http://dl.dropbox.com/u/6753359/acrobat-bad.PNG

不幸的是,由于Acrobat Reader更标准,因此它必须看起来正确。

有人能否告诉我为什么我的所有链接区域都会在acrobat reader中找到边框?

<小时/> 修改:我尝试使注释不被annotation.Opacity = 0annotation.Color = XColor.FromArgb(255, 255, 255, 255);隐藏。前者不起作用(边界仍然出现),后者使边界白色不能100%起作用,因为它会在某些文本行中产生奇怪(如白色线条切断y的底部,p等等。 )。

2 个答案:

答案 0 :(得分:6)

这是一个众所周知的问题。

解决方案可以在这里找到: http://forum.pdfsharp.net/viewtopic.php?p=6161#p6161

该框架是PDFsharp中的错误。这是Adobe Reader中的一个错误,最高10.0.3不显示框架。

更新:该错误很久以前就已修复,而使用最新版本创建的链接也不会有相关的框架。

答案 1 :(得分:2)

我通过以下方式解决了这个问题:

1。)从CodePlex

下载最新版本的PDFSharp

2.。)将PdfLinkAnnotations.cs第120行从new PdfLiteral("<</Type/Border>>");修改为new PdfLiteral("<</Type/Border/W 0>>");

3.。)编译PDFSharp项目

4.。)更改使用PDFSharp的项目以使用新编译的.dll。

希望这个简单的全包解释有助于其他人。