PdfSharpを使用してWebリンクを作成するための次の関数があります。
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が生成されると、FoxitReaderで表示するとすべてが正常になります。
ただし、Adobe Acrobat Reader 10および11は、リンクされた領域の周りに黒く細い境界線を示しています。
Acrobat http://dl.dropbox.com/u/6753359/acrobat-bad.PNG
残念ながら、Acrobat Readerはより標準的であるため、正しく表示する必要があります。
誰かが私のリンクエリアのすべてがアクロバットリーダーでそれらの中に境界線を取得している理由について私を手がかりにすることができますか?
編集:
annotation.Opacity = 0
注釈をとの両方で非表示にしようとしましたannotation.Color = XColor.FromArgb(255, 255, 255, 255);
。前者は機能しませんでした(境界線はまだ表示されています)。後者は境界線を白くしましたが、テキストの一部の行に奇妙な点が生じるため(y、pの下部を切り取る白い線など)、100%機能しません。 。)。