目前我无法使用体面的书签和目录生成一个不错的pdf。
理想情况下,我想要一个如下所示的pdf文档:
第1页(标题页,纵向)
第2页(目录,纵向)
第3页及以后(子类别中的所有表格,横向)
我的基本方法是:
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;
有了这些设置,我遇到了几个问题:
这很可能是因为我对输出传输系统缺乏经验,但我现在因为这些看似简单的问题而挣扎了几个小时。希望有人可以帮助我。
答案 0 :(得分:1)
经过大量的反复试验后,我终于找到了适合我的方法。我不会发布整个解决方案,因为它相对较长,但总的来说,我做了以下几点:
使用ods文档和proc将所有想要的数据集打印到其中。
创建了一个新的ods文档,并将前一个文档的所有输出移到这里,目录结构让我高兴 - 这使我以前想要的书签结构成为可能。我用obpage删除了所有的分页,并通过obbnote添加了表标题,并通过setlabel添加了正确的书签命名。出于某种原因,我还要在每个表标题之前插入两到三个回车符。这样我的链接就不像以前那么奇怪了。
而不是:
ods pdf text="^S={URL='#Tab1'} ...
ods pdf text="^S={URL='#Tab2'} ...
我用过这个:
ods pdf text="^S={URL='#IDX'} ...
ods pdf text="^S={URL='#IDX1'} ...
这样我就不必使用ods pdf anchor - 这句话似乎对我有害(在目录中链接不正确)。
尽管如此,我仍然无法将子类别直接链接到标题,而只能链接到下表。但是,我很好,所以我不会再尝试了。
如果有人对结果感兴趣,请点击此处:link