由于pdfmaker和postscript所做的相同,这让我感到非常困惑,但实际上编码风格却大不相同。
我知道如何用Postscript语言中的moveto和lineto和arc命令在其末尾用2个圆做成一条线,但是,由于超链接,显然我必须移动到pdfmark,pdfmark manual超级难以理解,并且有没有其他参考(书籍/在线教程)。
因此,如果能用一点描述就能生成这样的东西(如图所示),我将不胜感激。
最佳答案
这是最简单的版本。这将在PDF的左下角创建一个可单击区域,该区域将转到URL。
[/Rect [ 0 0 200 200 ] % Draw a rectangle
/Action % Define an action
<<
/Subtype /URI % Define the action's subtype as a hyperlink
/URI (http://www.example.com/) % Set the URL
>>
/Subtype /Link % Set the type of this PDFmark to a link
/ANN pdfmark % Add the annotation
默认情况下,将绘制边框,因此您可能需要清除边框:
[/Rect [ 0 0 200 200 ] % Draw a rectangle
/Action % Define an action
<<
/Subtype /URI % Define the action's subtype as a hyperlink
/URI (http://www.example.com/) % Set the URL
>>
/Border [0 0 0] % Remove the border
/Subtype /Link % Set the type of this PDFmark to a link
/ANN pdfmark % Add the annotation
但是,这只会创建一个可点击区域。然后,您需要绘制一些文本以单击:
/Helvetica findfont 16 scalefont setfont % Set the font to Helvetica 16pt
5 100 moveto % Set the drawing location
(http://www.example.com/) show % Show some text
最后,
pdfmark
在标准中并未在技术上进行定义,因此他们建议,如果您不使用Adobe的Distiller,则应定义一些内容来处理它。如果编译器无法识别,则这些代码基本上只会忽略pdfmark
:/pdfmark where
{pop}
{
/globaldict where
{ pop globaldict }
{ userdict }
ifelse
/pdfmark /cleartomark load put
}
ifelse
这是一个完整的工作PostScript程序:
%!PS-Adobe-1.0
/pdfmark where
{pop}
{
/globaldict where
{ pop globaldict }
{ userdict }
ifelse
/pdfmark /cleartomark load put
}
ifelse
[/Rect [ 0 0 200 200 ] % Draw a rectangle
/Action % Define an action
<<
/Subtype /URI % Define the action's subtype as a hyperlink
/URI (http://www.example.com/) % Set the URL
>>
/Border [0 0 0] % Remove the border
/Subtype /Link % Set the type of this PDFmark to a link
/ANN pdfmark % Add the annotation
/Helvetica findfont 16 scalefont setfont % Set the font to Helvetica 16pt
5 100 moveto % Set the drawing location
(http://www.example.com/) show % Show some text
showpage
编辑
另外,check out this manual有关
pdfmark
的更深入说明编辑2
另外,我还应该指出,我出于教学目的对内容进行了分隔。在大多数情况下,您会看到
/Action
写成一行,例如:/Action << /Subtype /URI /URI (http://www.example.com/) >>