2012年11月29日

Acrobat JavaScriptをPDFファイルに追加する(PHP版)

Quick PDF Libraryは、Acrobat® JavaScriptを取り扱うこともできます。PDFファイルを開いたときに実行するAcrobat® JavaScriptも、特定のアクション(印刷時・保存時・閉じた時など)にのみ実行させるAcrobat® JavaScriptの追加も可能でス。

今回のサンプル(PHP)の中心は、AddGlobalJavaScriptメソッドになりますが、同メソッドについての詳細は、Quick PDF Libraryの体験版もしくは製品版のマニュアル(PDF)にも記載されていますが、こちらにも記載されています。

下記のプログラムには日本語が含まれ、Shift_JISで作成されています。Shift_JISで扱えない文字を表示させたい場合は、一工夫必要です。無理やりUTF-8の文字列を渡しても、

Warning: Unknown: Could not convert string to unicode: `Unicode 文字のマッピングがターゲットのマルチバイト コード ページにありません。 ' in E:\(中略)addGlobalJavaScript_utf8.php on line 43

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

下記のプログラムを実行し、生成したPDFファイルを開くと、
pdf_javascript.jpg
のようなアラートが表示されます。

また、Acrobat® Professional版を使ってPDFファイルを開き、文書レベルJavaScriptを確認してみると、
acrobat_js.jpg
のように表示されますから、確かにAcrobat® JavaScriptが追加されていることが分かります。

<?php
	error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

	//このプログラムは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="091201_2.pdf"; if(!file_exists($filename)){ print $filename . " does not exist."; exit; } //Quick PDF Libraryで扱う場合、ファイルのパスはフルパスに $filename = realpath($filename); $result = $PDFLibrary->LoadFromFile($filename,""); if(!$result){ echo "load error $filename"; exit; } //Javascriptの名称(パッケージ名) $package_name = "js"; //Acrobat® JavaScript $javascript = "app.alert('御利用のAdobe Readerのバージョンもしくはその他のPDFビューアは、バージョン'+app.viewerVersion+'(相当)です。');"; $result = $PDFLibrary->AddGlobalJavaScript($package_name,$javascript); //保存用PDFファイルのパス。Quick PDF Libraryでは常にフルパスに変換して処理 $filename2 = str_replace(".pdf","_js.pdf",$filename); //保存します。 $result=$PDFLibrary->SaveToFile($filename2); if(!$result){ echo "can not save.$filename2
"; exit; } $PDFLibrary = null; $filename3=basename($filename2); echo "success
"; echo "$filename3"; ?>


posted by PDF太郎 at 14:22| Comment(0) | TrackBack(0) | サンプルプログラム | このブログの読者になる | 更新情報をチェックする

2012年11月28日

PHPでPDFファイルに画像を追加するサンプル

今回は、PDFファイルに画像を追加する方法です。今回のサンプル(PHP)の中心は、AddImageFromFileメソッドになりますが、同メソッドについての詳細は、Quick PDF Libraryの体験版もしくは製品版のマニュアル(PDF)にも記載されていますが、こちらにも記載されています。

AddImageFromFileメソッドで画像をオブジェクト化してから、SelectImageメソッドで画像を選択して、DrawImageメソッドで画像を実際にPDF上に描くという流れになります。

<?php
	error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

	$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="091201_2.pdf"; if(!file_exists($filename)){ print $filename . " does not exist."; exit; } //Quick PDF Libraryで扱う場合、ファイルのパスはフルパスに $filename = realpath($filename); $result = $PDFLibrary->LoadFromFile($filename,""); if(!$result){ echo "load error $filename"; exit; } //ページ数を取得 $pages = $PDFLibrary->PageCount(); //普通?の感覚どおりPDFファイルの左上を0,0にしたい場合は、 //SetOriginメソッド(引数1)を使ってください。 // http://www.quickpdflibrary.com/help/quickpdf/SetOrigin.php $PDFLibrary->SetOrigin(1); //追加する画像について $logo = "logo.jpg"; //Quick PDF Libraryで扱う場合、ファイルのパスはフルパスに $logo = realpath($logo); //画像のサイズが既知であれば、そのまま書いても良いですが・・・ list($image_width,$image_height,$type,$attr)=getimagesize($logo); //ピクセル(96dpi)をポイントに変換 $image_width = intval($image_width*72/96); $image_height = intval($image_height*72/96); for($i=1;$i<=$pages;$i++){ $result = $PDFLibrary->SelectPage($i); if(!$result){ echo "can not select page of $filename.
"; exit; } $image_id = $PDFLibrary->AddImageFromFile($logo, 0); $PDFLibrary->SelectImage($image_id); //各ページの左上に画像を表示する。 $result2 = $PDFLibrary->DrawImage(10,10,$image_width, $image_height); if(!$result2){ echo "can not draw image on $filename.Page is $i
"; exit; } } //保存用PDFファイルのパス。Quick PDF Libraryでは常にフルパスに変換して処理 $filename2 = str_replace(".pdf","_addimage.pdf",$filename); //保存します。 $result=$PDFLibrary->SaveToFile($filename2); if(!$result){ echo "can not save.$filename2
"; exit; } $PDFLibrary = null; $filename3=basename($filename2); echo "success
"; echo "$filename3"; ?>


posted by PDF太郎 at 21:48| Comment(0) | TrackBack(0) | サンプルプログラム | このブログの読者になる | 更新情報をチェックする

2012年11月27日

任意のページを抽出して、新しいPDFファイルを生成する方法

今回は、任意のページを抽出して新しいPDFファイルを生成する方法です。今回のサンプル(PHP)の中心は、ExtractFilePagesメソッドになりますが、同メソッドについての詳細は、Quick PDF Libraryの体験版もしくは製品版のマニュアル(PDF)にも記載されていますが、こちらにも記載されています。

<?php
	error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

	$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; } $dir ="./20100302/"; $fd = opendir($dir); while(false!==($filename=readdir($fd))){ if($filename=="."||$filename==".."){ continue; } //既に抽出してできたファイルはスキップ if(eregi("_extract",$filename)){ continue; } if(!eregi(".pdf",$filename)){ continue; } //入力ファイルをフルパスに $filename = $dir . $filename; $filename = realpath($filename); //出力ファイルをフルパスに $output_filename = dirname($filename). "\\" . basename($filename,".pdf") . "_extract912.pdf"; $password=""; //1ページ・3ページ目・5ページ目から7ページ目の合計5ページを抽出。 //PDFファイルによって該当ページ数が無い場合も、エラーにはなりません。 $result=$PDFLibrary->ExtractFilePages($filename,$password,$output_filename,"1,3,5-7"); if(!$result){ $error_code = $PDFLibrary->LastErrorCode(); if($error_code==409){ echo "Invalid file structure, file is damaged. -- $filename
"; } else { echo $error_code . "--$filename
"; } } } closedir($fd); $PDFLibrary = null; print "success
"; ?>


posted by PDF太郎 at 21:31| Comment(0) | TrackBack(0) | サンプルプログラム | このブログの読者になる | 更新情報をチェックする
×

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