SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ライセンス制限が緩く高速でPDFを作成可能なPHPライブラリ「Haru」

PHP::Haruで簡単なPDF帳票を作成する

ライセンス制限が緩く高速でPDFを作成可能なPHPライブラリ「Haru」(2)

  • X ポスト
  • このエントリーをはてなブックマークに追加

プロパティを設定する

 続いて、PDFにプロパティを設定します。プロパティは文書情報を示す上で大切な内容です。印刷する場合には不要な情報とも言えますが、デジタル情報ならではの特徴とも言えるものです。

 PDFでプロパティを設定するには、以下の2つのメソッドを使います。

  • bool HaruDoc::setInfoAttr ( int $type , string $info )
  • bool HaruDoc::setInfoDateAttr ( int $type , int $year , int $month , int $day , int $hour , int $min , int $sec , string $ind , int $off_hour , int $off_min )

 以下のように、PDFのプロパティダイアログで表示されるプロパティを設定します。最初に日本語でプロパティを表示する場合には、(1)のようにエンコードを指定する必要があります。

実行結果
実行結果
プロパティの設定(code_9.phpの一部)
$haru_doc->setCurrentEncoder("90msp-RKSJ-H");     // <---- (1)
$haru_doc->setInfoAttr(HaruDoc::INFO_TITLE,encode("タイトル"));
$haru_doc->setInfoAttr(HaruDoc::INFO_AUTHOR,encode("作成者"));
$haru_doc->setInfoAttr(HaruDoc::INFO_SUBJECT,encode("サブジェクト"));
$haru_doc->setInfoAttr(HaruDoc::INFO_KEYWORDS,encode("キーワード1,キーワード2"));
$t = time();
$haru_doc->setInfoDateAttr(HaruDoc::INFO_CREATION_DATE,
   date('Y',$t),date('n',$t),date('j',$t),
      date('H',$t),date('i',$t),date('s',$t),
   "",null,null);                                         
$haru_doc->setInfoDateAttr(HaruDoc::INFO_MOD_DATE,
   date('Y',$t),date('n',$t),date('j',$t),
      date('H',$t),date('i',$t),date('s',$t),
      "",null,null);
);
$haru_doc->setInfoAttr(HaruDoc::INFO_CREATOR,"application");

セキュリティ設定をする

パスワードを設定する

 出力するPDFにパスワードを設定します。例えば、個人ごとに機密性が高い帳票を作成する必要がある場合には、この機能は大変有効です。また、変更を許可しない場合でも、パスワード設定を行うことで実現が可能です。

パスワードの設定(code_10.phpの一部)
$haru_doc->setPassword('ABC','DEF');                  // <---- (1)
// 5(40bit)から16(128bit)に設定します
$haru_doc->setEncryptionMode(HaruDoc::ENCRYPT_R3,16); // <---- (2)

 パスワードには、「所有者のパスワード」と「ユーザのパスワード」があり、(1)では「所有者のパスワード」に"ABC"を、「ユーザのパスワード」に"DEF"を設定しております。

 主に「所有者のパスワード」はAcrobatを使って編集する人のためのパスワードであり、「ユーザのパスワード」はリーダーアプリを使って参照する人のためのパスワードです。

 通常は「ユーザのパスワード」が主に利用するパスワードになります。

 また、暗号化レベルの設定は(2)のように行えます。設定できる暗号強度は40ビットから128ビットまでとなっており、5から16までの数値を使って暗号強度を設定できます。

注意事項

 (1)のパスワード設定を行ってから、(2)の処理を行わないと設定が有効になりません。

パーミッションを設定する

 次に、PDFのパーミッションを設定します。パーミッションとは、主にコピーを許可する設定や、印刷を許可する設定を指定します。

パーミッションの設定(code_11.phpの一部)
$haru_doc->setPassword('ABC','');                     // <---- (1)
$mode = HaruDoc::ENABLE_READ | HaruDoc::ENABLE_PRINT; // <---- (2)
$haru_doc->setPermission($mode);                      // <---- (3)

 今回は、(1)で「所有者のパスワード」のみを設定しています。これで、参照のみを行うユーザにはパスワードの入力は求められません。また、パスワードの設定を行わないと、パーミッションの設定は行えません。

 (2)(3)で、許可する設定を指定します。このように、複数の指定する場合にはフラグを組み合わせた値で設定が可能です。

 通常の利用では、下記の権限がよく使われます。

  • HaruDoc::ENABLE_READ (参照する権限)
  • HaruDoc::ENABLE_PRINT (印刷する権限)
  • HaruDoc::ENABLE_COPY (テキストや画像をコピーする権限)

例えば、テキストや画像のコピーを許可しない場合には、(2)のように指定を行わなければコピーが許可されません。

次のページ
簡単な帳票を作成する

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
ライセンス制限が緩く高速でPDFを作成可能なPHPライブラリ「Haru」連載記事一覧
この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 小林 昌弘(コバヤシ マサヒロ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7218 2013/06/28 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング