C# ITextShape可单击多边形或路径

C# ITextShape可单击多边形或路径,c#,itextsharp,C#,Itextsharp,任何人都可以使用iTextSharp创建不规则形状的可点击注释 我知道我可以创建一个这样的矩形 float x1 = 100, x2 = 200, y1 = 150, y2 = 200; iTextSharp.text.Rectangle r = new iTextSharp.text.Rectangle(x1, y1, x2, y2); PdfName pfn = new PdfName(lnk.LinkID.ToString()); PdfAction ac = new P

任何人都可以使用iTextSharp创建不规则形状的可点击注释

我知道我可以创建一个这样的矩形

  float x1 = 100, x2 = 200, y1 = 150, y2 = 200;

  iTextSharp.text.Rectangle r = new iTextSharp.text.Rectangle(x1, y1, x2, y2);
  PdfName pfn = new PdfName(lnk.LinkID.ToString());
  PdfAction ac = new PdfAction(lnk.linkUrl, false);
  PdfAnnotation anno = PdfAnnotation.CreateLink(stamper.Writer, r, pfn, ac);

  int page = 1;
  stamper.AddAnnotation(anno, page);

不管用什么方法,比如说图形路径,我已经看到了这个答案,但那只是画出了它不可点击的形状

您正在寻找的秘密成分称为四点(QuadPoints;-)

请允许我通过向您展示示例来解释如何使用四边形点

您已经了解了如何构造和绘制路径,例如:

canvas.moveTo(36, 700);
canvas.lineTo(72, 760);
canvas.lineTo(144, 720);
canvas.lineTo(72, 730);
canvas.closePathStroke();
我使用这个代码片段只是为了显示我们将使其可点击的不规则形状

您已经知道如何创建具有矩形形状的可单击链接:

Rectangle linkLocation = new Rectangle(36, 700, 144, 760);
PdfDestination destination = new PdfDestination(PdfDestination.FIT);
PdfAnnotation link = PdfAnnotation.createLink(stamper.getWriter(),
    linkLocation, PdfAnnotation.HIGHLIGHT_INVERT,
    1, destination);
这与您在问题中已经提供的代码片段相对应

现在让我们介绍一些要点:

PdfArray array = new PdfArray(new int[]{72, 730, 144, 720, 72, 760, 36, 700});
link.put(PdfName.QUADPOINTS, array);
根据ISO-32000-1,四点是:

指定n个四边形坐标的8×n数字数组 在默认用户空间中,包含应激活链接的区域。 每个四边形的坐标按顺序给出

x1 y1 x2 y2 x3 y3 x4 y4
按逆时针顺序指定四边形的四个顶点。 出于方向的目的,例如应用下划线边框样式时, 四边形的底部是由
(x1,y1)
(x2,y2)
形成的线

如果该条目不存在或合格读卡器无法识别, 应该使用
Rect
条目指定的区域<代码>四点应 如果数组中的任何坐标位于由
Rect
指定的区域之外,则将忽略

请注意,我定义了
linkLocation
参数,使不规则形状适合该矩形


注意事项:您可以通过测试此示例来尝试此功能:,但请注意,虽然在Adobe Reader中查看文件时这将起作用,但对于未实现
QuadPoints
功能的劣等PDF查看器,这可能不起作用。

谢谢,我想我不知道它的名称是什么,我的绊脚石是什么