2008年06月03日

AcrobatSDKで開いているPDFのファイル名を取得する方法

【開発環境】
OS:Windows Server 2003
開発環境:VisualStudio2005 TeamEdition(SP1)
実行環境:Adobe Acrobat 8 Professional(8.1.2)

AcrobatのPlug-in(プラグイン)内から、AcrobatSDKのAPIを使用して、開いているPDFのファイル名を取得する方法に関するメモです。

ファイルを指定してPDFを操作する場合は、ユーザーがダイアログからファイルを指定してくれるので簡単なんですが。
既に開いているPDFファイルをAVDocを使って操作する場合のやり方はなかなか分かりませんでした。。。

結論としては、以下のようにASFileを介する事で、ファイル名を取得する事が出来ます。


/* 開いているPDFファイルのパス及びファイル名を取得 */
AVDoc avDoc;
PDDoc pdDoc = NULL;

ASFile asFile;
ASPathName volatile pathName = NULL;
char *tex = NULL;

avDoc = AVAppGetActiveDoc();
pdDoc = AVDocGetPDDoc (avDoc);
asFile = PDDocGetFile (pdDoc);
pathName = ASFileAcquirePathName (asFile);

ASText pdfFileName = ASTextNew();
ASFileSysDisplayASTextFromPath(ASGetDefaultUnicodeFileSys(), pathName, pdfFileName);

/* texにパス及びファイル名を格納したバッファのポインタを格納 */
tex = (char *)ASTextGetScriptText(pdfFileName, kASEUnicodeScript);


↓からは、過程で確認した内容です。

Acrobat本体のexeのパスを取得したい場合は以下のようにします。

/* Acrobatのexeのパスを取得 */
char Path[MAX_PATH];

memset(Path, 0, MAX_PATH);
GetModuleFileName(NULL, Path, MAX_PATH);


Plug-inの名前を取得したい場合は以下のようにします。

/* Plug-inの名前を取得 */
char Path[MAX_PATH];

memset(Path, 0, MAX_PATH);
ASExtensionGetFileName((ASExtension)gExtensionID, Path, MAX_PATH);


PDFファイル内に格納されている、XMP情報を気軽に取得するには以下のようにします。

/* XMPの情報を取得 */
char XMPName[MAX_PATH];
int xmp_len = 0;

/* ↓の"Title"の部分を変更すれば他の情報も取得可能 */
if((xmp_len = PDDocGetInfo(pdDoc, "Title", XMPName, MAX_PATH)) )
{
/* 全角の文字列が入っている場合には以下の処理が必要 */
char XMPName2[MAX_PATH];
memset(XMPName2, 0, MAX_PATH);

int xmp_len2 = PDXlateToHostEx(XMPName, xmp_len, XMPName2, MAX_PATH);
XMPName2[xmp_len2] = '\0';
}

・Adobe Extensible Metadata Platform(XMP)
http://www.adobe.com/jp/enterprise/xmp.html


WindowsAPIでパスのみ取得できます。
AcrobatのPlug-inのカレントディレクトリはファイル依存のようです。

char dic[MAX_PATH];

memset(dic, 0, MAX_PATH);
GetCurrentDirectory(MAX_PATH, (LPTSTR )dic);
posted by はやむー at 17:14| Comment(0) | TrackBack(0) | Adobe | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/99167843

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。