【问题标题】:putting hyperlink in pdf/postscript around a circle在 pdf/postscript 中围绕一个圆圈放置超链接
【发布时间】:2011-10-17 15:43:09
【问题描述】:

如您所见,圆圈周围有几个 ID,我不知道它们的具体协调情况(很难!)。所以,想知道是否有人有想法,为每个ID附加超链接,这意味着通过点击ID,用户会转到相应的网页。

我把代码HERE

这个圈子,是由后记脚本生成的!!

【问题讨论】:

  • 请贴出生成和显示ID的相关代码。
  • 我编辑了问题并放了源代码

标签: pdf graphics hyperlink postscript


【解决方案1】:

文本是使用如下结构绘制的:

247 UX 160.65 uy 移动到 (GH6) 显示行程

您需要添加一个 pdfmark 操作,您要使用的确切 pdfmark 取决于您要打开的内容和位置。如果要打开另一个 PDF 文件,可以使用带有 GoToR 操作的链接注释;如果要打开网页,可以使用启动操作或自定义操作,具体取决于查看 PDF 文件的应用程序。我假设你想要一个 Launch 操作。

Launch pdfmark 应该类似于:

[/矩形 [50 425 295 445] /动作 /启动 /边框 [0 0 2] /颜色 [.7 0 0] /URI (http://www.adobe.com) /子类型 /链接 /ANN pdf 标记

显然您需要计算 Rect 参数,以便单击文本区域将启动目标。

执行此操作的方法是使用 PostScript 路径运算符。首先我们需要保存当前设置,然后将文本转换为路径,然后计算路径的边界框。然后我们可以将这些坐标用于我们的 Rect 参数。

例如:

247 UX 160.65 uy 移动到 (GH6) dup % 复制字符串 gsave % 保存当前环境 exch % 将字符串拷贝到栈顶 [ /Rect % 在堆栈上放一个标记和名称 3 -1 roll % 将字符串副本置于顶部 真的 charpath % 创建一个相当于绘制文本的路径 flattenpath % 使曲线变平 pathbbox % 获取边界框 % 我们现在有我们的盒子在堆栈上 % 堆栈是:(GH6) [ /Rect llx lly urx ury % 所以把其他参数放好 /动作 /启动 /边框 [0 0 2] /颜色 [.7 0 0] /URI (www.dummy.com) /子类型 /链接 /安 pdfmark % 并执行 pdfmark grestore % 恢复图形状态 显示中风

部分文字的显示方式略有不同:

241 ux 84.65 uy 移动到 (45.0) dup stringwidth pop 2 div neg 0 rmoveto 显示

你可以做和上面完全一样的事情,只是把 dup...grestore 构造放在 rmoveto 之后和 show 之前。

警告:我根本没有测试过这个,但它应该会告诉你如何继续。

【讨论】:

  • 我试过了,但不知道它是否有效,因为质量下降了很多!
【解决方案2】:

PostScript 程序绘制数字 ID 的任何部分都需要包含一个 pdfmark,该 pdfmark 具有网页 URI 的 /Dest。它可能还需要指定 /AP 外观流。

这在原始 PostScript 程序中可能是微不足道的,但正如 BryanH 暗示的那样,如果没有看到原始 PostScript 就不可能给出指示。

当然,假设这些数字是由 PostScript 程序绘制的,并且将 PostScript 转换为 PDF 的工具理解 pdfmark 扩展运算符。

【讨论】:

    【解决方案3】:

    KenS 的示例正是我一直在寻找的,但有一个小的变化:

    [ pathbbox ]
    

    /Arial findfont 20 scalefont setfont
    100 200 moveto (riverdrums) 
    dup gsave exch 
    [ /Rect 3 -1 roll true charpath flattenpath [ pathbbox ] 
    /Action << /Subtype /URI /URI (http://riverdrums.com) >> 
    /Border [0 0 0] 
    /Subtype /Link 
    /ANN pdfmark 
    grestore 
    show
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-25
      • 2021-06-24
      • 1970-01-01
      • 2019-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多