少し間が開きましたがlibHaruを使ったPDFの生成でパスワードと使用権限の設定について紹介します。
パスワードの設定
HaruDoc::setPasswordでパスワードを指定するだけです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
<?php try { $doc = new HaruDoc; $doc->setPassword('foo', 'bar'); $doc->setPageMode(HaruDoc::PAGE_MODE_USE_THUMBS); $doc->useJPFonts(); $doc->useJPEncodings(); $page = $doc->addPage(); $page->setSize(HaruPage::SIZE_A4, HaruPage::LANDSCAPE); $page_w = $page->getWidth(); $page_h = $page->getHeight(); $font_name = $doc->loadTTF('/usr/share/fonts/opentype/ipafont-mincho/ipam.ttf', true); $ipam = $doc->getFont($font_name,'90msp-RKSJ-H'); $page->setRGBStroke(1, 0, 0); $page->setRGBFill(0, 0, 0); $page->beginText(); $page->setTextRenderingMode(HaruPage::FILL); $text = mb_convert_encoding('パスワード', 'SJIS-win', 'UTF-8'); $page->setFontAndSize($ipam, 36); $page->textOut(350, $page_h - 200, $text); $page->endText(); header('Content-Type: application/pdf'); header('Content-Disposition: attachment; filename=test.pdf'); $doc->output(); } catch(Exception $e) { echo $e->getFile().'('.$e->getLine().'):'.$e->getMessage(); } ?> |
生成されたPDFのプロパティをAcrobat Readerで見ると40bitのRC4で暗号化されていることが確認できます。
現状ではlibHaruはRC4のみの対応となっていますが、鍵の長さを128bitにすることができます。
1 2 3 4 5 6 7 |
<?php try { $doc = new HaruDoc; $doc->setPassword('foo', 'bar'); $doc->setEncryptionMode(HaruDoc::ENCRYPT_R3, 16); |
使用権限の設定
使用権限の設定も簡単で、HaruDoc::setPermissionで権限を指定するだけです。
たとえば印刷とドキュメント内のテキストや画像をコピーする権限を有効にする場合は以下のようにします。
1 2 3 4 5 6 7 8 |
<?php try { $doc = new HaruDoc; $doc->setPassword('foo', 'bar'); $doc->setEncryptionMode(HaruDoc::ENCRYPT_R3, 16); $doc->setPermission(HaruDoc::ENABLE_PRINT | HaruDoc::ENABLE_COPY); |
マニュアルには記述はありませんが、すべての権限を無効にするには0を指定すればよさそうです。
1 2 3 4 5 6 7 8 |
<?php try { $doc = new HaruDoc; $doc->setPassword('foo', 'bar'); $doc->setEncryptionMode(HaruDoc::ENCRYPT_R3, 16); $doc->setPermission(0); |
3回に渡ってlibHaruによるPDF生成を紹介しましたが、PHPで動的にPDFを生成する必要に迫られたときの選択肢としては上位に入るという印象を持ちました。