ITextShape可点击的多边形或路径

斯克利曼

任何人都可以使用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);

任何用图形路径做到这一点的方法,我都已经看到了这个答案:在PDF中绘制GraphicsPath,但这只是绘制了不可点击的形状。

布鲁诺·洛瓦吉

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

让我通过向您展示AddPolygonLink示例来说明如何使用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);

这与您已经在问题中提供的代码段相对应。

现在让我们介绍一些QuadPoints:

PdfArray array = new PdfArray(new int[]{72, 730, 144, 720, 72, 760, 36, 700});
link.put(PdfName.QUADPOINTS, array);

根据ISO-32000-1,QuadPoints为:

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

x1 y1 x2 y2 x3 y3 x4 y4

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

如果该条目不存在或合格的阅读器无法识别,Rect则应使用条目指定的区域QuadPoints如果数组中的任何坐标位于所指定的区域之外,则应忽略Rect

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

注意:您可以通过测试以下示例来尝试使用此功能:link_polygon.pdf,但是请注意,虽然在Adobe Reader中查看文件时此方法可以工作,但对于未实现该QuadPoints功能的劣等PDF查看器来说,此方法可能不起作用

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

多边形中的传单可点击网格

来自分类Dev

创建可点击的多边形three.js

来自分类Dev

使用多边形作为可点击区域,而不是矩形

来自分类Dev

在Google地图上制作可点击的多边形(适用于Android)

来自分类Dev

如何使可点击的图例在 d3 多边形图中可见

来自分类Dev

Leaflet Map-第二个多边形使第一层不可点击

来自分类Dev

读入SVG路径/多边形的坐标

来自分类Dev

从多边形的路径获取latLng失败

来自分类Dev

将多边形转换为路径

来自分类Dev

点击时google maps多边形,显示多边形内标记的摘要

来自分类Dev

无法点击多边形内的KML图层

来自分类Dev

GMap-无法检测到点击多边形

来自分类Dev

使用点击功能绘制新的Kinetic JS多边形

来自分类Dev

带有多边形的Google Maps Javascript制作路径

来自分类Dev

如何生成凹面多边形的回声路径

来自分类Dev

从路径反应js删除点更新多边形

来自分类Dev

CSS:剪切路径:多边形-圆角边界

来自分类Dev

Google Maps:如何从SVG路径创建多边形

来自分类Dev

圆角多边形

来自分类Dev

多边形图

来自分类Dev

滚动多边形

来自分类Dev

圆角多边形

来自分类Dev

标记多边形

来自分类Dev

多边形遏制

来自分类Dev

Boost多边形丢弃输入多边形

来自分类Dev

包含多边形的MYSQL多边形

来自分类Dev

获取通过移动多边形创建的多边形

来自分类Dev

多边形剪裁中的多边形

来自分类Dev

由减去的多边形创建的多边形