header image

携帯対応

QRコード

RING

人気ブログランキング

新着記事

9月 6th, 2007 PHP none Comments

PHPでPDFを作成するにはPDFlibやFPDFを使うのが定番。オイラの場合はオープンソースということでFPDFを使っている。
FPDF標準では既存のPDFを読み込んで追記するということは出来ないが、他のライブラリと組み合わせると実現可能なので、以下にメモ書きしておく。

1.必要なライブラリの入手
 まずは必要なライブラリをダウンロードする。
 FPDFは標準では日本語が利用できないのだが、これに対応する方法として、MBFPDFを利用する方法とFPDF_Japaneseを利用する方法がある。
 今回はFPDF_Japaneseを利用する。

 ダウンロードするもの
 ・FPDF本体 
  http://www.fpdf.org/から最新版の1.53をダウンロード
 
 ・japanese.zip
  http://www.fpdf.org/download/japanese.zipからダウンロード
 
 ・fpdi
  http://www.setasign.de/products/pdf-php-solutions/fpdi/から以下の2つをダウンロード
  FPDI-1.2.zip
  FPDF_TPL-1.1.1.zip

2.セットアップ
 1で入手したファイルをすべて解凍して、同一ディレクトリ内に配置する。
 下記の構成になるはずだ。(ルートフォルダはとりあえずfpdf153とする)

fpdf153
│  ex.php
│  FAQ.htm
│  fpdf.css
│  fpdf.php
│  fpdf_tpl.php
│  fpdi.php
│  fpdi_pdf_parser.php
│  histo.htm
│  install.txt
│  japanese.php
│  pdf_context.php
│  pdf_parser.php
│  wrapper_functions.php
├─decoders
├─doc
├─font
│  └─makefont
└─tutorial

3.PHPスクリプトの修正
 2で配置しただけでは、まだ既存のPDFは読み込めない。以下の通りPHPファイルを修正する
 対象はjapanese.php
 2行目を

require('fpdf.php');

から

require('fpdi.php');

へ。

15行目を

class PDF_Japanese extends FPDF

class PDF_Japanese extends FPDI

とする。

以上で準備は完了なので、サンプルスクリプトでテストする。
サンプルスクリプトは以下の通りだ。
こいつを用意してブラウザから叩けば新しいPDFが出来上がる。

define('FPDF_FONTPATH','./fpdf153/font/');
require_once("./fpdf153/japanese.php");

$pdf= new PDF_Japanese("P", "mm", "A4");
$pdf->AddSJISFont();
$pdf->SetFont('SJIS', '', 8);
$pagecount = $pdf->setSourceFile("org.pdf");
for($i = 0; $i <$pagecount; $i++ ) {
        $tplidx = $pdf->ImportPage($i+1);
        $pdf->addPage();
        $pdf->useTemplate($tplidx);
        $s = "全ページの下に文字加えてみるよ。ワショーイ。";
        $s = mb_convert_encoding($s, "sjis", "euc");
        $pdf->Text(20, 285, $s);
}
$pdf->Output("new.pdf","I");

フォントの種類の変更方法は別途調べることにする。

“PHPで既存PDFに文字を挿入する”へのコメントはありません。

コメントはありません。是非コメントしてください。

コメントする

XHTML: 以下のタグが利用可能です: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Trackback

 


ads

読まなきゃモグリ