SHOEISHA iD

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

連載記事

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

CodeZine BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。

書籍に関する記事を見る

'); googletag.cmd.push(function() { googletag.pubads().addEventListener('slotRenderEnded', function(e) { var ad_id = e.slot.getSlotElementId(); if (ad_id == 'div-gpt-ad-1659428980688-0') { var ad = $('#'+ad_id).find('iframe'); if ($(ad).width() == 728) { var ww = $(window).width(); ww = ww*0.90; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/728+","+ww/728+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/728+","+ww/728+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/728+","+ww/728+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/728+","+ww/728+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(90*ww/728)+"px;width:"+728+"px;}", 0 ); } else { if ($(window).width() < 340) { var ww = $(window).width(); ww = ww*0.875; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/320+","+ww/320+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/320+","+ww/320+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/320+","+ww/320+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/320+","+ww/320+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(180*ww/320)+"px;width:"+320+"px;}", 0 ); } } } }); }); } else { document.write('
'); document.write('
'); }
ライセンス制限が緩く高速でPDFを作成可能なPHPライブラリ「Haru」

PHP::Haruで基本的なPDFを作成する

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

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

 PHPでPDFを作成する方法として、Haruを紹介します。Haruの元となっているlibharuは日本人が作成したということもあり、日本語の扱いが考慮されています。しかしながら、日本においてもHaruを使ったPDFの作成方法を紹介したものはあまりなく、使い方が分かりやすいとは言えません。そこで、本記事では例を用いながらその使い方を紹介していきます。

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

はじめに

 PHPでPDFを作成する場合にはPDFLibやmPDF、FDPDFなどさまざまな選択肢がありますが、ライセンス、パフォーマンスなどの点で問題がある場合に、Haruの利用を検討してみてはいかがでしょうか。

 HaruはZLibやPNGと同様に、非常に緩いライセンス形態を取っているため、サービスの種類を問わず組み込みやすい点に特徴があります。

 また、PHPのネイティブエクステンションとして提供されているため、PHPのライブラリとしてパフォーマンスが出ない場合にも利点があります。

 とはいえ、サイト上にもあまり情報がなく、日本語の利用に関して不安があるかもしれません。しかし最初にいくつか挙げたライブラリは、元々は海外発信のライブラリでした。対して、HaruはlibharuというCのライブラリのエクステンションであり、libharuは日本が発信元となっていますので、日本語に関しても安心して利用できます(現在のメンテナンスは日本人ではなくなっています)。

対象読者

 PHPでの基本構文を理解している方で、帳票印刷やPDFファイルに興味がある方を対象としています。

必要な環境

 この記事では、以下のライブラリを使用しています。

  • libharu 2.1
  • haru 1.0.4

 また、PHP5.4を使用し、Linuxで動作を確認しています。

Haruのインストール

 libharuは、以下のいずれかの方法でインストールできます。

libharuのインストール(yumでのインストール)
# yum install libharu
libharuのインストール(ソースからのインストール)
# wget http://libharu.org/files/libharu-2.1.0.tar.gz
# tar xvfz libharu-2.1.0.tar.gz
# cd libharu-2.1.0
# ./configure; make; make install

 PHPのHaruは、libharu2.2以上での利用はできません。必ず2.1をインストールしてください。

 また、PHPのエクステンションは以下のようにインストールできます。

Haruのインストール
# pecl install haru

PDFの注意点

 HaruのAPIは、他のライブラリに比べ、PDF内部仕様に近いAPIです。従って、Haruを使うためには、最低限のPDFの仕様についても知っておくと便利です。特に注意する点として、PDFの座標軸があります。

 PDFでは通常、人が意識する左上が(0,0)で右下に向かって座標が広がるのではなく、左下が(0,0)になっており、右上に向かって座標が広がっています。少々分かりづらいので、下図をみると分かりやすくなります。

PDFの座標軸
PDFの座標軸

 Y軸は0に向かって記述していくようになるので、注意してください。

 また、サイズも多少計算が面倒になっています。例えば、A4の横サイズは595.27600097656となっており、インチの概念で計算されています。従ってミリで計算する際には「(mm)×72÷25.4」などを使って、近似値を求める必要があります。

会員登録無料すると、続きをお読みいただけます

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

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

メールバックナンバー

次のページ
日本語出力での基本の流れ

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

  • 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/7141 2013/05/28 14:00
" ); }

おすすめ

アクセスランキング

  1. 1
    「CUDA」 ~マンガでプログラミング用語解説
  2. 2
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  3. 3
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  4. 4
    2024年の提示年収が高いプログラミング言語は? paiza調査によるランキングが発表
  5. 5
    VSCodeをUML図やフローチャート作成に使ってみよう
  1. 6
    【超時短テクニカルライティング】生成AIを活用してドキュメントを書く流れを掴もう! NEW
  2. 7
    計測と改善をひたすら繰り返したら、年間コストを1億円削減した──不確実性の高いプロジェクトに挑む
  3. 8
    「VRAM」 ~マンガでプログラミング用語解説
  4. 9
    健全なソフトウェア設計の第一歩! 既存のPHPソースコードからクラス図を自動生成しよう
  5. 10
    「正解のない仕事」に備える効率的な学び方とは? エンジニアリングマネージャーが認知科学と共に紐解く

アクセスランキング

  1. 1
    「CUDA」 ~マンガでプログラミング用語解説
  2. 2
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  3. 3
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  4. 4
    2024年の提示年収が高いプログラミング言語は? paiza調査によるランキングが発表
  5. 5
    VSCodeをUML図やフローチャート作成に使ってみよう
  6. 6
    【超時短テクニカルライティング】生成AIを活用してドキュメントを書く流れを掴もう! NEW
  7. 7
    計測と改善をひたすら繰り返したら、年間コストを1億円削減した──不確実性の高いプロジェクトに挑む
  8. 8
    「VRAM」 ~マンガでプログラミング用語解説
  9. 9
    健全なソフトウェア設計の第一歩! 既存のPHPソースコードからクラス図を自動生成しよう
  10. 10
    「正解のない仕事」に備える効率的な学び方とは? エンジニアリングマネージャーが認知科学と共に紐解く
  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    ITエンジニア本大賞2025、投票締切直前! みんなで選んだ歴代の大賞本を振り返って一挙紹介
  3. 3
    Python 3.13の新機能、対話型インタプリタの機能強化や高速化などを解説
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    「CUDA」 ~マンガでプログラミング用語解説
  6. 6
    VSCodeをドキュメント作成に活用――テキストエディタ、Markdownエディタの設定と拡張機能を解説
  7. 7
    今後生成AIとどう向き合うべきなのか? 現場のエンジニアと研究者が最新研究事例から語り合う
  8. 8
    2024年12月に開催される注目のITエンジニア向けカンファレンス5選
  9. 9
    日本在住の英語を話すソフトウェア開発者、年収の中央値は950万円に
  10. 10
    Vue.js3.4~3.5の新機能をまとめて紹介! 新しいAPIやSSRの改善

イベント

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

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

メールバックナンバー

アクセスランキング

  1. 1
    「CUDA」 ~マンガでプログラミング用語解説
  2. 2
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  3. 3
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  4. 4
    2024年の提示年収が高いプログラミング言語は? paiza調査によるランキングが発表
  5. 5
    VSCodeをUML図やフローチャート作成に使ってみよう
  1. 6
    【超時短テクニカルライティング】生成AIを活用してドキュメントを書く流れを掴もう! NEW
  2. 7
    計測と改善をひたすら繰り返したら、年間コストを1億円削減した──不確実性の高いプロジェクトに挑む
  3. 8
    「VRAM」 ~マンガでプログラミング用語解説
  4. 9
    健全なソフトウェア設計の第一歩! 既存のPHPソースコードからクラス図を自動生成しよう
  5. 10
    「正解のない仕事」に備える効率的な学び方とは? エンジニアリングマネージャーが認知科学と共に紐解く

アクセスランキング

  1. 1
    「CUDA」 ~マンガでプログラミング用語解説
  2. 2
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  3. 3
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  4. 4
    2024年の提示年収が高いプログラミング言語は? paiza調査によるランキングが発表
  5. 5
    VSCodeをUML図やフローチャート作成に使ってみよう
  6. 6
    【超時短テクニカルライティング】生成AIを活用してドキュメントを書く流れを掴もう! NEW
  7. 7
    計測と改善をひたすら繰り返したら、年間コストを1億円削減した──不確実性の高いプロジェクトに挑む
  8. 8
    「VRAM」 ~マンガでプログラミング用語解説
  9. 9
    健全なソフトウェア設計の第一歩! 既存のPHPソースコードからクラス図を自動生成しよう
  10. 10
    「正解のない仕事」に備える効率的な学び方とは? エンジニアリングマネージャーが認知科学と共に紐解く
  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    ITエンジニア本大賞2025、投票締切直前! みんなで選んだ歴代の大賞本を振り返って一挙紹介
  3. 3
    Python 3.13の新機能、対話型インタプリタの機能強化や高速化などを解説
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    「CUDA」 ~マンガでプログラミング用語解説
  6. 6
    VSCodeをドキュメント作成に活用――テキストエディタ、Markdownエディタの設定と拡張機能を解説
  7. 7
    今後生成AIとどう向き合うべきなのか? 現場のエンジニアと研究者が最新研究事例から語り合う
  8. 8
    2024年12月に開催される注目のITエンジニア向けカンファレンス5選
  9. 9
    日本在住の英語を話すソフトウェア開発者、年収の中央値は950万円に
  10. 10
    Vue.js3.4~3.5の新機能をまとめて紹介! 新しいAPIやSSRの改善