お世話になっております。
静岡大学の杉山です。
江別の鈴木さまがDSpaceの新しいPDFカバーページを公開してくれました。
http://www12.ocn.ne.jp/~zuki/Japanization/others/coverpage/coverpage.html
http://d.hatena.ne.jp/zuki_ebetsu/20090616/1245121148
これを実装してみました。
従来のPDFカバーは、コンテンツ登録後に定時実行で作成するしくみでしたが、
新しいページは利用者がアクセスするたびに生成して見せるようになっています。
これまでは、メタデータを修正してもカバーには自動的に反映されないため、
一旦カバーを削除して作り直さなければいけませんでした。
また、以前カバーの表示項目を増やして欲しいというリクエストがあった
のですが、そのときは一括で全カバーを再作成したこともありました。
新しいカバーは、プログラムの変更だけで再作成の作業が不要になります。
ということで、いくつかカスタマイズしてみました。
1つのアイテムに本文ファイルが複数登録された場合、
http://hdl.handle.net/10297/2606
アイテムページを経由しないで、サーチエンジンなどから直接PDFを開くと、
利用者は他のファイルの存在に気づかない恐れがあります。
そこで、カバーと同時に「しおり」を生成するようにしました。
import com.lowagie.text.pdf.PdfAction;
import com.lowagie.text.pdf.PdfOutline;
String url = getURL(item);
String title = getField(item, "title", null);
PdfOutline root = pdfwriter.getDirectContent().getRootOutline();
PdfOutline links = new PdfOutline(root, new PdfAction(url), title);
このツリーに本文のURLをぶらさげて、カバーと本体を結合するとき、
PdfCopy writer = null;
writer = new PdfCopy(document, byteout);
writer.setViewerPreferences(PdfCopy.PageModeUseOutlines);
とすれば「しおり」を表示した状態でPDFが開くようになりました。
(OSやブラウザによっては閉じた状態の場合もあるようです)
# 違っていたらご指摘ください
PDFカバーに表示するのは、メタデータだけでなくてもよいはずで、こういう
こともPDFに表示できます。
http://hdl.handle.net/10297/635
----------------------------------------
杉山 智章 (SUGIYAMA Tomoaki) /~\
静岡大学附属図書館 学術情報部
図書館チーム スタッフ
422-8529静岡市駿河区大谷836
phone:054-238-4477 fax:054-238-5408