[PHP-users 10117] pdfで日本語表示

Yuuji Yamashita php-users@php.gr.jp
Sat, 14 Sep 2002 22:05:34 +0900


山下と申します。

現在以下のようなスクリプトで、pdfを出力するテストを行っています。
「ABCDE テスト」という出力をさせたいのですが、
「ABCDE e X g」と化けて表示してしまいます。

<?php

$pdf = pdf_new();
pdf_open_file($pdf);
pdf_set_info($pdf, "Author", "TEST");
pdf_begin_page($pdf, 612, 792); //A4

$font = pdf_findfont($pdf, "HeiseiKakuGo-W5", "EUC-H", 0);
pdf_setfont($pdf, $font, 16);

pdf_set_text_pos($pdf, 72, 720);
pdf_show($pdf, "ABCDE テスト");
pdf_end_page($pdf);
pdf_close($pdf);

$document = pdf_get_buffer($pdf);
$length = strlen($document);
$filename = "myfirstpdf.pdf";

header("Content-Type: application/pdf");
header("Content-Length: " . $length);
header("Content-Disposition: inline; filename=" . $filename);

echo($document);
unset($document);
pdf_delete($pdf);

?>



そこで、スクリプトそのものをEUCで書き、php.iniの設定で

mbstring.internal_encoding = SJIS
 ↓                         ~~~~
mbstring.internal_encoding = EUC-JP
                             ~~~~~~
と設定を変更すると「ABCDE テスト」と期待した出力が得られました。
しかし今度は、db2と連携させているphpファイルが
動かなくなってしまいました。

db2と連携させているphpファイルも動作し、
しかも、pdfも文字化け無しに出力できるようにするには
どのようにすればよいでしょうか?


各文字コードです。
(a)db2デフォルト文字コード(?)    :SJIS
(b)db2と連携phpファイル       :SJIS
(c)db2と連携後phpで出力されるテキスト:SJIS
(d)pdf出力phpファイル        :SJIS

(c)は最終的にflashに渡すため、SJISでないといけません。


--[環境]--
RedHat Linux 7.1
php4.2.2
apache1.3.26
pdflib-4.0.3
ibmdb2


--[php.ini]--
[mbstring]
mbstring.internal_encoding = SJIS
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.detect_order = auto
mbstring.substitute_character = none;
mbstring.script_encoding      =auto

output_buffering = On
output_handler = mb_output_handler


以上よろしくお願いします。



Yamashita
cah36920@pop07.odn.ne.jp