Monthly Archives: December 2011

WordPressの投稿をPDF形式でダウンロード出来るプラグイン「POST2PDF Converter」

WordPressの投稿や固定ページをPDF形式でダウンロード出来るようにするプラグイン「POST2PDF Converter」をリリースした。 最新の「POST2PDF Converter」をダウンロード 「POST2PDF Converter」は、PHPライブラリ「TCPDF」を用いて、HTML形式のWordPressのコンテンツをPDFに変換し、ダウンロード出来るようにする。 このページの先頭にも、ダウンロードリンクがあるので、実際の動きを見たいなら試してみると良いだろう。 主な特徴は下記の通り。 ダウンロードリンクの追加が簡単、かつ柔軟。 PDFのダンロードに制限をかけることが可能。 様々な言語に対応し、言語に応じて最適化される(つもり)。 PDFのフォントサイズの変更やフォントの指定が可能。 ショートコードを処理するか削除するか選べる。 Font subsettingサポートし、PDFのファイルサイズを抑えられる。 なお、「Font subsetting」は、フォントのうち、実際使われている文字だけをPDFに組み込むことで、フォントの組み込みによるPDFのファイルサイズの増大を抑えることが出来る機能であるが、PHPの処理としては負荷がかかる複雑な処理になる。 そのため、場合によっては、「Font subsetting」を無効化し、フォント全体を組み込んだ方が良いかもしれない。 「POST2PDF Converter」で使用している「TCPDF」は、現状、日本語で書かれたHTMLを上手くPDF化出来ず、一部の文字が表示されないなどの問題が発生する。 これは、搭載している日本語フォントが主な原因であるが、この問題を解決するために、別途、TCPDF用日本語フォント「RCJフォント for TCPDF」と「梅フォント for TCPDF」を公開している。 ファイルサイズの関係で、「RCJフォント for TCPDF」と「梅フォント for TCPDF」は「POST2PDF Converter」に同梱していないので、別途インストールして欲しい。 「Font subsetting」を無効化し、フォント全体を組み込むならファイルサイズが比較的小さい「梅フォント for TCPDF」が向いている。

Posted in WordPress, ネット・PC, 自作アプリ | Tagged , , , | 1 Comment

TCPDF用日本語フォント「RCJフォント」

「TCPDF」用の日本語フォント「RCJフォント for TCPDF」をリリースした。 バージョン003.03 2011/12/22 最新の「RCJフォント for TCPDF」をダウンロード 「TCPDF」は、テキストやHTMLをPDFファイルに変換するためのPHPライブラリであるが、標準のフォントでは、正しく日本語を表示できないなど、日本語環境(おそらくマルチバイト過環境全般)での利用に関して問題も多い。 そこで、オープンソースの日本語フォントである「IPAフォント」ベースに、TCPDF用に変換した「RCJフォント for TCPDF」を作成した。 パッケージには、「IPAゴシック」、「IPA Pゴシック」、「IPA明朝」、「IPA P明朝」と同等のフォントが収められている。 このフォントは、「/tcpdf/fonts/」ディレクトリにインストールして使うことができるが、PDFを受け取った相手が、同じフォント持っていなくとも編集出来るようにするには「FontSubsetting」を setFontSubsetting(false) に設定して使用する必要があるため、PDFファイルにフォント全体が組み込まれ、生成するPDFファイルのサイズが大きくなるという問題もある。 「RCJフォント」は、超マイナーなフォントであり、パッケージにソースとして収録はしているが、PDFを受け取った相手のPCに「RCJフォント」がインストールされている確率は皆無であり、そのためPDFにフォントを組み込む必要が生じる。 また、フォント自体のファイルサイズが小さくないため、PHPに割り当てられたメモリの上限が小さい場合は、PDFを正常に生成出来ないかもしれない。 その場合は「php.ini」を編集するなどして、割り当てるメモリの上限を増やす必要がある。 memory_limit = 64M

Posted in ネット・PC | Tagged , , | Leave a comment

WP SyntaxHighlighter バージョン1.7 リリース

「WP SyntaxHighlighter バージョン1.7」をリリースした。 最新の「WP SyntaxHighlighter」をダウンロード バージョン1.7は、1.6.7に続くリリースとなるが、中身は、バージョンの数字以上に変化している。 まず、bbPress 2.0以上をサポートし、フォーラムのトピック、リプライに含まれるコードを強調表示できるようになった。 bbPressの投稿フォームには、コメント欄と同様にテキスト形式のリンクボタンを挿入できるようになっており、簡単にソースコードを強調表示させることが出来る。 また、過去のバージョンでは、ソースコードのマークアップに<pre>タグのみを用いていたが、バージョン1.7では、ショートコードもサポートした。 書式はWordPress.comで使われているショートコードと互換性がある。 [sourcecode language="php" gutter="true" firstline="1" highlight="" htmlscript="false"]PHP コード[/sourcecode] [sourcecode lang="xhtml" gutter="true" firstline="1" highlight="" htmlscript="false"]XHTML コード[/sourcecode] language(lang)以外の属性は、省略しても良い。language(lang)を省略するとプレーンテキストとして強調表示される。 設定にもよるが、ショートコードは、投稿の作成/編集画面、固定ページの作成/編集画面、コメントの投稿欄、管理画面上のコメントの編集/返信画面、「WP SyntaxHighlighter Widget」で使うことができる他、bbPressのトピック/リプライの投稿フォーム、トピック/リプライの編集フォーム、管理画面のトピック/リプライの作成/編集画面でも使用できる。 実は、より簡略な下記の書式のショートコードもサポートしているのだが、事実上、これらの書式は使えない。 [source language="php" gutter="true" firstline="1" highlight="" htmlscript="false"]PHP コード[/source] [code lang="xhtml" gutter="true" firstline="1" highlight="" htmlscript="false"]XHTML コード[/code] なぜならば、この書式を適切に処理できるフィルターを実装していないからだ。そのため、これらの書式を使おうと思うと面倒になる。仮に自身でコードをエスケープしたとしても低い権限しか与えられていないユーザーが投稿した場合は、ソースコードが壊れる場合がある。 そもそも「WP SyntaxHighlighter Widget」の場合は、手入力でのマークアップは想定していないので、多少長くともWordPress.comとの互換性を優先した形になっている。 ショートコードを有効にした状態で、本文中にこれらのショートコードを書くと、表示の際にタグに展開されてしまうので注意が必要だ。 それを避けたい場合は、下記のようにショートコードを「[]」で囲んでエスケープすること。 [[sourcecode language="php" gutter="true" firstline="1" highlight="" htmlscript="false"]PHP コード[/sourcecode]] [[sourcecode lang="xhtml" gutter="true" firstline="1" highlight="" htmlscript="false"]XHTML コード[/sourcecode]] 例外として、<pre>タグで囲まれたショートコード(sourcecode、source、codeのみ)、つまり、ショートコードを含むソースコードを<pre>タグでマークアップした場合は、ショートコードをエスケープしなくとも、正常に処理されるようにしている。 ショートコードの導入に合わせて、コメント欄、WP SyntaxHighlighter Widget、bbPressの投稿フォームに追加されるテキスト形式のリンクボタンも強化され、<pre>タグだけでなく、ショートコードの挿入もサポートし、設定画面で切り替えることが出来るようになった。 過去のバージョンでは、投稿および固定ページにソースコードを記述することが許されたのは、「unfiltered_htm」権限を持つユーザー、つまりデフォルトのユーザーロールでは、管理者、編集者のみであったが、必要に応じて投稿者や寄稿者など、記事の投稿が許されているユーザー対して、ソースコードの記述を許可出来るようになった。 以上が目に見える機能面での主な新機能であるが、目に見えない部分でも変化している。 構成ファイルのうち、メインファイルが肥大して来たので、役割毎にファイルを分割し、処理を効率化している。 パフォーマンスを重視するなら、設定画面で不要な機能を無効化することをオススメする。 ただし、(過去のバージョンでも既に複雑であったが)設定画面は、我ながら、ここまで必要かと思うほど複雑になっているので、隅まで良く見た方が良い。 デフォルトでも、全てのユーザーが必要としていると思われない機能は、殆ど無効化されているが、設定の煩雑さを考慮して、敢えてデフォルトで有効になっている機能もある。 なお、デフォルトで有効になっている機能は、プラグインインストール時のWordPressのバージョンによっても異なる。 今後のリリースでも、設定画面に関しては、より複雑化する方向に向かうのではないかと思うわれるが、「設定しなくとも使え、設定することで、より幸せになれる」方向で開発を行うつもりであるため、頭が痛くなるようなら設定画面は見ない方が幸せかもしれない。 とは言え、以下の項目だけは、しっかり設定した方が良いだろう。 使用するライブラリ・・・2つのバージョンから選べるが、外観や機能も随分と異なったものになる。 テーマ・・・外観を変えたいなら。 ツールバー・・・強調表示されたソースコードの右上に表示される「?」やツールバーを消せる。 デフォルトの言語・・・必要な言語だけに絞りこめば、ボタンをクリックした時に表示される言語も減るので操作しやすくなる。 コメントやウィジェットの処理を除き、過去のバージョンでは、WordPressのデフォルトフィルターに依存し、独自のフィルターの適用は避けてきたが、必要性に迫られて投稿や固定表示の投稿/編集時、および表示時に適用されるフィルターも追加している。

Posted in WordPress, ネット・PC, 自作アプリ | Tagged , , | Leave a comment

「Ultimate TinyMCE」でWordPressのビジュアルエディターをカスタマイズ

WordPressのビジュアルエディターのカスタマイズを簡単にするプラグインと言えば、「TinyMCE Advanced」が定番であるが、今回紹介する「Ultimate TinyMCE」もビジュアルエディターのカスタマイズを簡単に行う事ができる優秀なプラグインである。 リリースから間もないが、既に人気プラグインとなっており、「Ultimate TinyMCE」も「TinyMCE Advanced」と並んで定番となりそうである。 「TinyMCE Advanced」が4行にわたって自由にアイコンを配置し、順序の変更や区切りの表示も柔軟に出来るのに対して、「Ultimate TinyMCE」は、デフォルトで表示される2行に加えて3行目、4行目に表示するボタンをチェックボックで選択する仕組みを採用している。 順番の変更は出来ない。単に表示/非表示が選べるだけである。 柔軟性を欠くものの、その分気軽さがあり、下記のように簡単にビジュアルエディターにボタンを追加できる。 また、ボタンを追加してくれる以外に、標準のボタンの機能拡張も行なってくれる。 下記は、拡張された「リンクの挿入/編集」ボタンである。 既存のボタンの拡張に関しては、個人的には不要なので、設定画面で選択出来るようになると有難い。 過去のバージョンでは、WordPressのインストールパスによっては、設定画面でアイコンが表示されないバグがあったが、バーッジョン1.5.6以降では、これも解消している。 また、バージョン1.5.7以降は、設定画面の日本語表示にも対応した。 ちなみに「TinyMCE Advanced」と「Ultimate TinyMCE」の共存はできない、エラーになるわけではないが、同時に有効化すると、ボタンの配置は「TinyMCE Advanced」の設定が優先され、一部のボタンは「Ultimate TinyMCE」のものと置き換わる。

Posted in WordPress, ネット・PC | Tagged , , | 2 Comments

初心者による初心者のためのPHP講座 第6回 条件分岐

ここまで学んだ知識でも、変数の定義や関数を記述して簡単なプログラムを作成することは出来るはずである。 しかし、条件分岐やループ処理などの制御構文を記述することで、初めて複雑なプログラミングが可能になる。 今回は「条件分岐」について説明する。 「条件分岐」とは、特定の条件を満たすか否か判定し、その結果に応じて処理を割り当てる制御構文である。 条件分岐には「if文」、「switch文」が使われる。 if文 「if文」とは、「もし~ならば、処理を実行する」といった意味を持つ構文である。 条件式の評価を行い、その条件が真(ture)であれば、処理を実行する。 <?php if (条件式) { 処理; } ?> 下の例では、変数$colorが、「red」であれば、echo()関数が実行され、「Red」と表示される。 <?php if ($color == "red") { echo "Red"; } ?> if文では、「()」内に評価する条件式を記述し、対応する処理は「{}」内に記述する。 条件式の評価の部分で使われている「==」は、比較演算子と呼ばれる構文で、この場合は、左辺と右辺の値が等しいことを意味している。 「$colorがredと等しい」か否かの評価、つまり「$colorがred」であるか否かの評価を行なっている。 上記のif文は、条件式の評価が偽(false)である場合は、何も行わない、単一の条件の評価であるが、「else if文」を使えば、最初の「もし(if) ならば」が偽であれば、「あるいは ならば」といった別の評価を行うことが出来る。 下記の例では「$colorがred」である場合は、「echo “Red”;」実行して、if文を終了するが、「$colorがred」でない場合は、続いて「$colorがblue」か否かの評価が行われる。 <?php if ($color == "red") { echo "Red"; } else if ($color == "blue") { echo "Blue"; } ?> 「else if」文は、下記のように複数回記述することも出来る。 <?php if ($color == "red") { echo "Red"; } else if ($color == "blue") { echo "Blue"; } else if ($color == "black") { echo "Black"; } ?> 「else if」は、空白を空けずに「elseif」と書いても良い。 個人的には、「else if」と書く癖があるが、同様の構文を持つJavaスクリプトで「elseif」と書くべきところを、「else if」と書いて失敗することがある。 そう言った意味では「elseif」で覚えたほうが良いかもしれない。 更に、「else文」を使えば、いずれの条件式評価も偽となった場合の処理を記述することが出来る。 <?php if ($color == "red") { echo "Red"; } else if ($color == "blue") { echo "Blue"; } else if ($color … 続きを読む →

Posted in PHP, PHP講座, ネット・PC | Tagged | Leave a comment