首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAS ODS PDF正确链接

SAS ODS PDF正确链接
EN

Stack Overflow用户
提问于 2016-05-30 12:33:23
回答 1查看 785关注 0票数 1

目前,我无法生成一个不错的pdf与体面的书签和目录。

理想情况下,我希望有一个如下所示的pdf文档:

第1页(标题页,肖像方向)

第2页(目录,肖像方向)

第3页和进一步(分类别的所有表格,景观方向)

我的基本方法是:

代码语言:javascript
复制
options orientation=portrait nocenter nodate nonumber;
ods pdf file="C:\xyz.pdf" style=sasweb;
ods escapechar='^';

/* Title page */
    title;
    ods pdf text="^S={just=c} ^20n Document XYZ";
/* ---------- */

/* Table of contents */
    ods pdf startpage=now;
    title "Contents";
    ods pdf text="Classes A & B";
    ods pdf text="^S={URL='#Tab1'}   Table 1: Class A";
    ods pdf text="^S={URL='#Tab2'}   Table 2: Class B";
    ods pdf text="Classes C & D";
    ods pdf text="^S={URL='#Tab3'}   Table 3: Class C";
    ods pdf text="^S={URL='#Tab4'}   Table 4: Class D";
/* ----------------- */

ods pdf startpage=now;  /* Start new page ... */
ods pdf startpage=no;   /* ... and define no pagination */
title;
options orientation=landscape;

/* Table list */
    %macro make_table(in_data=,title=,link=);
        ods pdf anchor="&link";
        ods proclabel="&title";
        ods pdf text="^2n &title";
        proc print data=&in_data contents='' noobs;
        run;
    %mend;
    ods pdf text="Classes A & B";

    /* Table 1 */
    %make_table(in_data=sashelp.class,title=Table 1: Class A,link=Tab1);
    /* Table 2 */
    %make_table(in_data=sashelp.class,title=Table 2: Class B,link=Tab2);
    ods pdf startpage=now;
    ods pdf text="Classes C & D";
    /* Table 3 */
    %make_table(in_data=sashelp.class,title=Table 3: Class C,link=Tab3);
    /* Table 4 */
    %make_table(in_data=sashelp.class,title=Table 4: Class D,link=Tab4);
/* ---------- */
ods pdf close;

在所有这些设置中,我遇到了几个问题:

  1. 关于pdf书签和目录,我想有到表格标题的链接。“表1”和子类别(如:“类A&B”,书签中的子类别应该在第1级,表标题在第2级。然而,"ods pdf锚“-statement似乎只寻找下一个过程,而不是下一个"ods pdf文本”-statement(我更喜欢这样)。有什么方法可以简单地做到这一点吗?
  2. 单击超链接和书签对我来说完全是一团糟:有时列名被截断(因此我必须向上滚动才能看到它们),表3和表4的超链接将我带到一个不同的目的地,然后是相应的书签。
  3. 无论出于什么原因,从表1到标题的距离都小于所有其他表。

这很可能是因为我对输出交付系统缺乏经验,但我现在为这些看似简单的问题挣扎了几个小时。希望有人能帮我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-07 13:53:49

经过多次尝试和错误之后,我终于找到了一种适合我的方法。我不会发布整个解决方案,因为它相对较长,但总之,我做了以下工作:

  1. 使用ods文档和proc打印所有想要的数据集。
  2. 创建了一个新的ods文档,并将上一份文档的所有输出移到这里,目录结构让我感到高兴--这使我以前想要的书签结构成为可能。我用obpage删除了所有页面,并通过obbnote添加了表标题,并通过setlabel添加了正确的书签命名。出于某种原因,我还必须在每个表标题之前插入两到三个回车返回。这样我的链接就不再像以前那么奇怪了。
  3. 使用ods pdf和proc文档创建pdf。在这里,我像以前一样创建了目录,但只做了一点改动:

而不是这样:

代码语言:javascript
复制
ods pdf text="^S={URL='#Tab1'} ...
ods pdf text="^S={URL='#Tab2'} ...

我用这个:

代码语言:javascript
复制
ods pdf text="^S={URL='#IDX'} ...
ods pdf text="^S={URL='#IDX1'} ...

这样,我就不必使用ods pdf锚-声明,这在我看来是有缺陷的(目录中的链接错误)。

尽管如此,我仍然无法将子类别直接链接到标题,但只能链接到下表。不过,我没问题,所以我不会再试了。

如果有人对结果感兴趣,那么它就来了:链接

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37525789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档