由于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/) >>

09-06 11:12