2012年12月02日

PHPにて、PDFファイルにしおり(ブックマーク)を追加する方法

今回は、PDFファイルのしおり機能(Bookmark機能。ブックマーク機能)について取り上げます。もちろん、Acrobat®でもしおりの追加機能はありますが、Quick PDF Libraryを使うと次のような場合に非常に便利です。

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

のようなエラーが発生します。

下記のプログラムを実行すると、
outline.jpg
のように表示されますから、確かにしおりが追加されていることが分かります。

<?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"; ?>


posted by PDF太郎 at 23:53| Comment(0) | TrackBack(0) | サンプルプログラム | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

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


※画像の中の文字を半角で入力してください。

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

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