要求是在pdf中显示一些文本,其中有一个超链接到一个网站/ pdf / etc - 类似于HTML,你会看到,请点击这里,这里打开一个链接。
我正在使用PlanetPress创建pdf,基本上是PostScript代码,添加了维生素和铁。
当在文本中找到http://时,Acrobat会自动创建链接,因此PlanetPress不会直接处理链接(因为它们是由Acrobat自动创建的)。
我可以通过直接通过PlanetPress传递PDFMark PostScript代码来创建满足我们要求的静态链接,但是当我尝试为多行代码动态执行相同操作时,列表中的最终链接将成为每行的链接。
在PlanetPress中,我基本上循环遍历XML文件并将结果发送到.ps文件。
这是我的PDF标记代码:
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')
我使用/ count字段来确定正在读取/传递给PostScript文件的不同值。 我用过/ rect&amp; / border字段创建超链接区域。我认为矩形将是超链接区域的边界,但这似乎不是这种情况。 我已经尝试使用moveto来确保光标在页面上移动,但这对最终结果没有任何影响。 passthrough(''+ inttostr(floattoint(&amp; width * 72))+''+ inttostr(floattoint(&amp; j))+'moveto')
我真的不知道PostScript,但我认为这是两个链接输出的一部分(因为它们是真正的链接,我将链接切断了)
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
为什么这些不起作用的任何想法? 我想也许我需要在每个pdfmark框之间休息一下,因为它们现在似乎共享边框但我不知道如何做到这一点。 感谢
答案 0 :(得分:3)
/Rect
确定了链接的矩形。但看起来代码的矩形左下角值为0,0表示所有矩形。因此矩形是重叠的,因此顶部(最后创建的)将是单击时激活的那个。请记住,/Rect
为[ "lower left x" "lower left y" "upper right x" "upper right y" ]
,因此前两个值定义矩形的左下角,后两个值定义矩形的右上角。
“现在我只需要弄清楚如何使用所有4个点重复绘制矩形”
我不确定我是否会遗漏这个额外的问题。您是否在问:“现在我已经为超链接的/ Rect设置了正确的值,如何在那里绘制一个矩形?”
要查找矩形的所有四个点,只需使用/Rect
中的信息即可
值。例如,比如/Rect [ 70 680 110 690 ]
,那么矩形的四个点是(70,680),(70,690),(110,680)和(110,690)。您可以使用适当的绘图命令绘制该矩形。