Pdf PostScript-超链接表,但只有一个链接用于所有

Pdf PostScript-超链接表,但只有一个链接用于所有,pdf,postscript,Pdf,Postscript,要求是在pdf中显示一些文本,这些文本下面有一个指向站点/pdf/etc的超链接-类似于HTML,您将在其中看到请单击此处并在此处打开链接 我正在使用PlanetPress创建pdf,基本上是添加了维生素和铁的PostScript代码 当在文本中找到http://时,Acrobat会自动创建链接,因此PlanetPress不会直接处理链接(因为它们是由Acrobat自动创建的) 我可以通过直接通过PlanetPress传递PDFMark PostScript代码来创建满足我们需求的静态链接,但是

要求是在pdf中显示一些文本,这些文本下面有一个指向站点/pdf/etc的超链接-类似于HTML,您将在其中看到请单击此处并在此处打开链接

我正在使用PlanetPress创建pdf,基本上是添加了维生素和铁的PostScript代码

当在文本中找到http://时,Acrobat会自动创建链接,因此PlanetPress不会直接处理链接(因为它们是由Acrobat自动创建的)

我可以通过直接通过PlanetPress传递PDFMark PostScript代码来创建满足我们需求的静态链接,但是当我尝试对多行代码动态执行相同操作时,列表中的最后一个链接将成为每行的链接

在PlanetPress中,我基本上在一个XML文件中循环,并将结果发送到.ps文件

这是我的PDFmarks代码:

        passthrough('[ /Rect [ 0 0 16 '+inttostr(floattoint(&j))+' ]')
        passthrough('/Action << /Subtype /URI /URI ('+&CentreCodeLink+') >>')
        passthrough('/Count '+IntToStr(&i)+'')
        passthrough('/Subtype /Link')
        passthrough('/Border [ 1 1 1 ]')
        passthrough('/ANN pdfmark')
passthrough('[/Rect[0 0 16'+inttostr(floattoint(&j))+']
传递(“/Action>”)
直通('/Count'+IntToStr(&i)+'')
传递('/Subtype/Link')
直通('/Border[1]')
直通(“/ANN pdfmark”)
我使用了/count字段来确定不同的值正在被读取/传递到PostScript文件。 我已经使用/rect&/border字段创建了一个超链接区域。我认为矩形应该是超链接区域的边界,但事实并非如此。 我尝试使用moveto来确保光标沿着页面移动,但这对最终结果没有任何影响。 直通(“”+inttostr(floattoint(&width*72))+“”+inttostr(floattoint(&j))+“移动到”)

我真的不知道PostScript,但我认为这是两个链接输出的一部分(我减少了链接,因为它们是真正的链接)

0*m
213.9994 30.00256*m
0 35.00296*m
*gr
*gs
[1 0 0 1 0 70.75305]concat
/^PP${systemdict/show get exec}*bd
&正文/$1索引2获取存储/u1索引6获取存储1获取*sf
/^PP${systemdict/show get exec}*bd
&粗体/$1索引2获取存储/u1索引6获取存储1获取*sf
36 12.00037*m
36 12.00037*m(伦敦-哈默史密斯)$
165.612.00037*m
&weblinkstyle dup 0获取[9 0 0-9 0 0]*mf*sf
/^PP${systemdict/show get exec}*bd
[]0 setdash
/$1索引5获取dup 0{1 1 0*sc}*bi put存储区/exch 8获取dup 0{1 1 0*sc}*bi put存储区
165.6002 12.00037*m(伦敦-安琪尔)$
([/Rect[0 0 540 16])cvx exec
(/Action>)cvx exec
(/Count 1)cvx exec
(/Subtype/Link)cvx exec
(/Border[1])cvx exec
(/ANN pdfmark)cvx exec
(540 16移动到)cvx exec
/^PP${systemdict/show get exec}*bd
&粗体/$1索引2获取存储/u1索引6获取存储1获取*sf
36 24.00073*m
36 24.00073*m(伦敦-伦敦桥)$
165.6 24.00073*m
&weblinkstyle dup 0获取[9 0 0-9 0 0]*mf*sf
/^PP${systemdict/show get exec}*bd
[]0 setdash
/$1索引5获取dup 0{1 1 0*sc}*bi put存储区/exch 8获取dup 0{1 1 0*sc}*bi put存储区
165.6002 24.00073*m(伦敦桥/伯勒大街)$
([/Rect[0 0 540 28])cvx exec
(/Action>)cvx exec
(/Count 2)cvx exec
(/Subtype/Link)cvx exec
(/Border[1])cvx exec
(/ANN pdfmark)cvx exec
(540 28移动到)cvx执行
/^PP${systemdict/show get exec}*bd
你知道为什么这些不起作用吗? 我在想也许我需要在每个pdfmark框之间休息一下,因为它们现在似乎共享一个边界,但我不知道如何做到这一点。
感谢链接的
/Rect
确实定义了链接的矩形。但看起来代码的矩形左下角值为0,所有矩形的值为0。因此矩形重叠,因此顶部的矩形(最后创建的一个)将是单击时激活的矩形。记住,
/Rect
[“左下x”“左下y”“右上x”“右上y”]
,因此前两个值定义矩形的左下点,后两个值定义矩形的右上点

“现在我只需要找出如何使用所有4个点重复地重新绘制矩形”

我不确定我是否在下面和这个附加问题下。你是在问,“现在我已经为超链接的/Rect设置了正确的值,我如何在那里绘制矩形?”

要找到矩形的所有四个点,只需使用
/Rect

例如,假设
/Rect[70 680 110 690]
,那么矩形的四个点是(70680),(70690),(110680)和(110690)。您可以使用适当的绘图命令来绘制该矩形。

Doh!谢谢!我不能相信我查看了每个数字和空格,并且没有对我自己生成的数字给予足够的注意。现在我只需要找出如何使用所有4个点重复绘制该矩形
0 0 *m
213.9994 30.00256 *m
0 35.00296 *m
*gr
*gs
[1 0 0 1 0 70.75305]concat
 /^PP$ {systemdict /show get exec} *bd
&body /$ 1 index 2 get store /_ 1 index 6 get store 1 get *sf
 /^PP$ {systemdict /show get exec} *bd
&bold /$ 1 index 2 get store /_ 1 index 6 get store 1 get *sf
36 12.00037 *m
36 12.00037 *m (London - Hammersmith) $
165.6 12.00037 *m
&weblinkstyle dup 0 get [9 0 0 -9 0 0] *mf *sf
 /^PP$ {systemdict /show get exec} *bd
[] 0 setdash
/$ 1 index 5 get dup 0 {1 1 0 0 *sc}*bi put store /_ exch 8 get dup 0 {1 1 0 0 *sc}*bi put store
165.6002 12.00037 *m (London - Angel) $
([ /Rect [ 0 0 540 16 ]) cvx exec
(/Action << /Subtype /URI /URI \(http://WelcomePacka5LondonAngel/\) >>) cvx exec
(/Count 1) cvx exec
(/Subtype /Link) cvx exec
(/Border [ 1 1 1 ]) cvx exec
(/ANN pdfmark) cvx exec
( 540 16 moveto) cvx exec
 /^PP$ {systemdict /show get exec} *bd
&bold /$ 1 index 2 get store /_ 1 index 6 get store 1 get *sf
36 24.00073 *m
36 24.00073 *m (London - London Bridge) $
165.6 24.00073 *m
&weblinkstyle dup 0 get [9 0 0 -9 0 0] *mf *sf
 /^PP$ {systemdict /show get exec} *bd
[] 0 setdash
/$ 1 index 5 get dup 0 {1 1 0 0 *sc}*bi put store /_ exch 8 get dup 0 {1 1 0 0 *sc}*bi put store
165.6002 24.00073 *m (London - Bridge / Borough High Street) $
([ /Rect [ 0 0 540 28 ]) cvx exec
(/Action << /Subtype /URI /URI \(http://WelcomePacka5LondonBridge/\) >>) cvx exec
(/Count 2) cvx exec
(/Subtype /Link) cvx exec
(/Border [ 1 1 1 ]) cvx exec
(/ANN pdfmark) cvx exec
( 540 28 moveto) cvx exec
 /^PP$ {systemdict /show get exec} *bd