MS WORDなどからPDFファイルを作成後、しおりを手動で追加する作業はAcrobat®ではなくても、いろいろなPDF作成ソフトで比較的容易に可能です。しかしながら、元のMS WORDファイルを変更した場合、再び、しおりを手動で追加していく作業を最初からやり直さなければならないことがあります。これは、文字通り大変な作業です。数文字の修正であれば、Acrobat®のタイプライターツールなどで可能な場合がありますが、そうできない場合もあります。
しかし、Quick PDF LibraryなどのPDFライブラリーを使うと、そのしおりを追加するプログラムを残しておいて次回も使いまわしできるため、大元のPDFファイルが修正されても、プログラム内のパラメータの微調整で済むことになり、大変便利です。毎回、何というタイトルを付けようかと考える必要がなくなりますし、入力ミスをなくすために毎回入力チェック・校正作業をする必要がなくなります。
今回のサンプル(PHP)の中心は、NewOutlineメソッドになりますが、同メソッドについての詳細は、Quick PDF Libraryの体験版もしくは製品版のマニュアル(PDF)にも記載されていますが、こちらにも記載されています。
下記のプログラムには日本語が含まれ、Shift_JISで作成されています。Shift_JISで扱えない文字を表示させたい場合の方法は思いつきません。無理やりUTF-8の文字列を渡しても、
Warning: Unknown: Could not convert string to unicode: `Unicode 文字のマッピングがターゲットのマルチバイト コード ページにありません。 ' in E:\(中略)bookmark_utf8.php on line 65
のようなエラーが発生します。
下記のプログラムを実行すると、

のように表示されますから、確かにしおりが追加されていることが分かります。
<?php error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE); //このPHPプログラムの文字コードはShift_JISで作成しています。 $PDFLibrary= new COM("DebenuPDFLibraryAX0912.PDFLibrary"); if(!$PDFLibrary){ echo "COM error"; exit; } if($PDFLibrary->UnlockKey("ライセンスキー") == 1){ echo "License validation successful!"; echo "
"; echo "Valid license key: "; echo $PDFLibrary->LicenseInfo; echo "
"; }else{ echo "License validation failed!"; echo "
"; exit; } $filename ="hogehoge.pdf"; //Quick PDF LibraryでPDFファイルを取り扱うときは常にフルパスに $filename = realpath($filename); try{$result = $PDFLibrary->LoadFromFile($filename,"");}catch(Exception $error){ echo "can not load " . $filename . "
"; echo $error . "
"; $error_code=$PDFLibrary->LastErrorCode(); echo $error_code . "
"; exit; } if(!$result){ $error_code=$PDFLibrary->LastErrorCode(); echo "load error
". $error_code; exit; } //普通?の感覚どおりPDFファイルの左上を0,0にしたい場合は、 //SetOriginメソッド(引数1)を使ってください。 // http://www.quickpdflibrary.com/help/quickpdf/SetOrigin.php $PDFLibrary->SetOrigin(1); //しおりをデフォルトで表示する //Quick PDF Libraryのマニュアルの中ではbookmarkではなく、outlineという英語になっています。 //http://www.quickpdflibrary.com/help/quickpdf/SetPageMode.php $PDFLibrary->SetPageMode(1); //http://www.quickpdflibrary.com/help/quickpdf/NewOutline.php $bookmark_id =$PDFLibrary->NewOutline(0,"各教科の勉強方法",9,570); //しおりに階層を持たせることも可能。第一引数に親のしおりIDを与えます。 $bookmark_id2 = $PDFLibrary->NewOutline($bookmark_id,"国語の勉強方法",9,610); $bookmark_id3 = $PDFLibrary->NewOutline($bookmark_id,"算数の勉強方法",10,550); $bookmark_id4 = $PDFLibrary->NewOutline($bookmark_id,"理科の勉強方法",12,220); $bookmark_id5 = $PDFLibrary->NewOutline(0,"学習効率を高めるノートの作り方",19,0); $bookmark_id6 = $PDFLibrary->NewOutline(0,"まとめ",22,0); $new_file = str_replace(".pdf","2.pdf",$filename); $PDFLibrary->SaveToFile($new_file); $new_file2=basename($new_file); echo "$new_file2
"; $PDFLibrary = null; echo "success"; ?>