2016-05-30 66 views
1

目前我無法生成一個不錯的PDF與體面的書籤和目錄。SAS ODS 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; 

有了這一切建立我遇到的幾個問題:

  1. 關於PDF書籤和目錄表我想有鏈接到表標題(如「表1」)和子類別(例如,「類別A & B」),其中,在書籤子類別應在1級和表標題處第2級然而,「ODS PDF錨」語句來似乎只查看下一個過程,而不是下一個「ods pdf文本」語句(我更喜歡)。有沒有辦法以一種簡單的方式實現這一點?
  2. 點擊超鏈接和書籤是我的一個完整的混亂:有時候列名會被截斷(因此我必須向上滾動,看到他們)和表3和表4中的超鏈接帶領我到不同的目的地,則相應的書籤。
  3. 無論出於何種原因,從表1到它的標題的距離都小於所有其他表。

這很可能是因爲我對輸出傳送系統的經驗不足,但我現在用這些看似簡單的問題掙扎了好幾個小時。希望有人能幫助我。

+0

沒有想法嗎?我在這裏上傳得到的.pdf文件:[link](https://www.docdroid.net/E7Kja3c/test.pdf.html)。 也許這樣,我的意思是有點清晰。 – SASquatsch

回答

1

經過大量的試驗和錯誤,我終於找到了一種適合我的方式。我不會發布整體解決方案,因爲它是比較長的,但總之我做了以下內容:

  1. 使用消耗臭氧層物質的文件和PROC打印所有想要的數據集進去。

  2. 創建一個新文檔的消耗臭氧層物質,並從以前的文檔中的所有輸出與我高興的目錄結構移動到這裏 - 這使我先前想的書籤結構。我刪除了與obpage所有paginations中,並通過obbnote表標題以及正確的書籤通過setlabel命名。出於某種原因,我還需要在每個表格標題之前插入兩到三個回車符。這樣我的鏈接就不像以前那麼奇怪了。

  3. 使用ods pdf和proc文檔創建pdf。在這裏,我創建表的內容和以前一樣,但有一個變化不大:

取而代之的是:

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錨 - 對我來說似乎有缺陷的聲明(目錄中的鏈接不正確)。

儘管如此,我仍然無法將子類別直接鏈接到標題,但只能鏈接到下表。但是,我很好,所以我不會再嘗試。

如果有人對結果感興趣,可以看看:link