公告

[公告]
2014/01/17
由於已經是faculty的關係,不太有足夠時間寫部落格。因此更新的速度會相當緩慢。再加上近幾年來SAS GLOBAL FORUM沒有出現讓我覺得驚艷的技術文件,所以能分享的文章相對也減少許多。若有人推薦值得分享的SAS技術文件,請利用『問題討論區』告知。

2013/07/19
臉書留言板的功能因為有不明原因故障,因此特此移除。而intensedebate的留言板因管理不易,也一併移除。目前已經開啟內建的 G+ 留言系統,所以請有需要留言的朋友,可直接至『問題討論區』裡面留言。


2007年8月20日 星期一

Retrieving SAS Programs Back From PDF Files

原文載點:http://www.lexjansen.com/pharmasug/2005/posters/po01.pdf

也許有許多人和我一樣喜歡從網路上面下載許多 SUGI 的文獻來看。如果遇到好的文章,一定會想把內文所附的程式存起來使用。由於 SUGI 的文章大都已經轉換為 PDF 檔案格式,如果想要把程式從 PDF 檔拿出來使用,最快的方法是使用 ADOBE Acrobat Professional 版,因為一般的 Acrobat Reader Version 不支援 PDF 文件編輯。Professional 版是要錢的,所以第二個折衷的方法是利用一些 freeware 把 PDF 檔轉成 DOC 檔,再利用 Word 開啟剪下。Eric Zhang 在 PharmSUGI 2005 發表了一個可用 SAS 直接把 PDF 裡面的程式轉成 SAS 檔。如此一來將可造福許多使用者。

Macro PDF2PGM 一共包含七個參數,結構如下:

%PDF2PGM(Dir=,
Member=,
MemType=PDF,
PgmDir=&dir,
PgHeader=N,
PgFooter=N,
Wmark=N);


參數說明如下:
  • Dir = 存放 PDF 的路徑
  • Member = PDF 檔名。如果要一次轉兩個以上的檔,需要用「|」符號來區分
  • MemType = PDF 檔案的副檔名,原始設定即 PDF。
  • PgmDir = 存放 SAS 檔案的路徑,原始設定和 Dir 所設定的路徑是一樣的。也就是說如果沒有特別說明第二條路徑,轉換後的檔案會被放在原來 PDF 的路徑裡面
  • PgHeader = PDF 檔案有無標頭,原始設定是無(N)
  • PgFooter = PDF 檔案有無註腳,原始設定是無(N)
  • Wmark = PDF 檔案有無浮水印,原始設定是無(N)
以下看幾個範例:

範例一:
FILENAME DIRFN 'c:\pdf2pgm\pdfiles';
%PDF2PGM(Dir=dirfn,
Member=counts table | adverse events,
PgHeader=Y,
PgFooter=Y);


先利用 Filename 語法把路徑 c:\pdf2pgm\pdfiles 設定成路徑變數 DIRFN,然後把 DIRFN 設定在參數 DIR 裡面。轉換的原始檔案有兩個,分別是 count table.pdf 和 adverse events.pdf。利用「|」區隔開來。不用打上副檔名,因為 .pdf 本來就是預設值。由於原始檔案有標頭和註腳,所以必須將 PgHeader 和 PgFooter 設定成「Y」。

範例二:
FILENAME PDFDIRFN 'c:\pdf2pgm\pdffiles';
FILENAME PGMDIRFN 'c:\pdf2pgm\sasprograms';
%PDF2PGM(Dir=pdfdirfn,
Member=_ALL_,
PgmDir=pgmdirfn,
Wmark=Y);


這個範例是要讓轉換後的檔案存入不同的路徑裡面。PDFDIRFN 是原來放 PDF 檔案的路徑,PGMDIRFN 是拿來放轉換後的 SAS 檔路徑。Member 參數設定成 _ALL_ 會把所有放在 PDFDIRFN 的 PDF 檔案拿去轉換。由於這個範例裡面的 PDF 檔是沒有標頭和註腳的,所以不用額外設定 PgHeader 和 PgFooter。不過由於有浮水印的關係,所以必須設定 Wmark。

這個程式有個很大的好處,就是如果 PDF 檔案裡面只有單純的程式碼,那使用者可以利用 PDF2PGM 把程式碼抓出來,並且直接在同一個 SAS 檔案裡面直接執行這道程式。不過 Eric Zhang 並沒有把原始碼放在 PharmSUGI 的文件上,所以必須 email 向他索取看看。

CONTACT INFORMATION
Your comments and questions are valued and encouraged. You may contact the author by mails or e-mails at the following
addresses:
Eric Zhang, ezhang5@cntus.jnj.com
Centocor Inc., C4-1
200 Great Valley Parkway
Malvern, PA 19355
CODE { display: block; /* fixes a strange ie margin bug */ font-family: Courier New; font-size: 8pt; overflow:auto; background: #f0f0f0 url(http://klcintw.images.googlepages.com/Code_BG.gif) left top repeat-y; border: 1px solid #ccc; padding: 10px 10px 10px 21px; max-height:200px; height:200px; // for IE6 line-height: 1.2em; }