PDF生成プログラムで日本語が文字化けする原因と解決方法

このQ&Aのポイント
  • PDF::API2を使用したPDF生成プログラムで日本語が文字化けする問題が発生しています。日本語の表示テストを行った結果、文字化けが発生しています。
  • 問題の原因はPDF::API2のフォント設定にあります。ソースコード中のフォント指定が間違っている可能性があります。正しいフォントを選択することで文字化け問題を解決することができます。
  • 解決するためには、PDF::API2のフォント設定を確認し、適切なフォントを指定する必要があります。例えば、'kozgopromediumacro' フォントや 'Times-Roman' フォントを試してみることができます。
回答を見る
  • ベストアンサー

PDF::API2を使用してPDF生成プログラムを作成しています。

PDF::API2を使用してPDF生成プログラムを作成しています。 以下のソースで日本語が文字化けします。 use PDF::API2; use PDF::API2::Content::Text; use PDF::API2::Resource::CIDFont::CJKFont; my $text = "テスト表示"; #PDFのテンプレートファイルを開く my $pdf = PDF::API2->open("../template.pdf"); #m文字フォントの指定 my $page = $pdf->openpage(); my $fnt = $pdf->cjkfont( 'kozgopromediumacro', -encode=>'shiftjis' ); my $txt_label = $page->text; #請求書IDの表示 $txt_label->textlabel(100,100, $fnt,9, $text); $pdf->saveas("../bill/new.pdf"); フォントの部分を以下のようにcorefontで設定しても文字化けしました。 my $fnt = $pdf->corefont('Times-Roman'); 原因が分かる方がいましたらご教授下さい。

  • Perl
  • 回答数2
  • ありがとう数19

質問者が選んだベストアンサー

  • ベストアンサー
  • t-okura
  • ベストアンサー率75% (253/335)
回答No.2

提示されているコードをカット&ペースト。テンプレートと出力先を 変更。use utf8 をつけて、utf8 で保存したものを実行すると 文字化けしないで正しく表示されています。 違いは何でしょうか。テンプレートにしている PDF ファイル、 あるいは実行環境でしょうか。 こちらの実行環境は、 Ubuntu 10.4 perl 5.10.1 PDF::API2 2.015 PDF::API2::Content::Text 2.000 PDF::API2::Resource::CIDFont::CJKFont 2.001 です。

nuun1107
質問者

お礼

ご回答頂きありがとう御座います。 PDF::API2のバージョンが古かったようです。 新しいものと入れ替えると、正常に動作することが確認できました。 また何かありましたら宜しくお願い致します。

その他の回答 (1)

  • t-okura
  • ベストアンサー率75% (253/335)
回答No.1

すこし前に PDF::API2 を試したことがあります。 textlabel に渡す文字列を UTF8 フラグ付きにすれば正しく 表示されました。 ただ、kozgopromediumacro だと文字列中の半角数字が欠けて しまいました。 http://search.cpan.org/dist/PDF-API2/lib/PDF/API2/Resource/CIDFont/CJKFont.pm には kozgopromediumacro が挙げられていませんが、使えるのでしょうか。

nuun1107
質問者

補足

ご回答頂きありがとう御座います。 UTF8フラグ付きでも試しましたが、日本語表示されませんでした。 また、"KozGo"で指定した場合も同様で文字化けとなります。 原因が分かる方がいらっしゃいましたら、ご教授の程お願い致します。

関連するQ&A

  • PDF::API2 で字間が開きすぎる

    PerlでPDF::API2を使って、PDF帳簿に文字を入れるスクリプトを書いていたのですが、「テ       ス       ト」のように異常に字間が生まれて挿入されてしまいます。 対処方法をご存じの方おられましたら教えて下さい。 use PDF::API2; use PDF::API2::Resource::CIDFont::CJKFont; my $pdf = PDF::API2->open("template6.pdf"); $page = $pdf->openpage(); my $gfx = $page->gfx; my $gfx2 = $page->gfx; my $gfx3 = $page->gfx; my $jfs = $pdf->cjkfont( 'KozGo', -encode=>'shiftjis' ); my $text = "テスト"; $gfx->textlabel(30, 700, $jfs, 10, $text); $pdf->saveas("new.pdf");

    • ベストアンサー
    • Perl
  • YAHOO ウェブ検索Web APIを使ったプログラム

    perlのペーペープログラマーです とりあえず動けばOK的にしか作れないレベルです 現在YAHOO ウェブ検索Web APIを使ったプログラムを作成しています (プログラム、フォーム用、結果表示用のHTMLなどもutf-8で記述) 大体普通に動くのですが一部キーワードを使うとなぜか違う検索結果が返ってきます 例:SEOツール 1.返ってくるべきページ http://search.yahoo.co.jp/search?p=SEO%E3%83%84%E3%83%BC%E3%83%AB 2.なぜか受け取るページ http://search.yahoo.co.jp/search?p=SEO%83c%81[%83%8B なぜか2のshift-jisっぽいものが返ってきます 他のキーワードなどでは普通のUTF-8のページが返ってきます 文字化けなどはほとんどありません 正直まったく原因が分かりません いったい何をどうすれば良いのでしょうか? ソースは下記みたいな感じです &decode; #デコードサブルーチン use LWP::Simple; use XML::Simple; $url = "http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch?appid=$appid&query=$in{'keyword'}"; $response = get($url); $xml = new XML::Simple; $yahoo_xml = $xml->XMLin($response); $tra = $yahoo_xml->{totalResultsAvailable}; $page = <<"EOF"; $tra EOF &page; #ページ表示サブルーチン $pageを表示 ちなみに文字化けは他プログラムでは発生していましたが解決しました 関連性があるのでしょうか? 問題 APIから帰ってきたものを@lineに入れてHTML表示 それ以外の変数文字列が文字化け 解決策 APIから返ってきたものをforeachでutf-8にデコードしたら他のものが普通に表示されました。 foreach (@line) {Jcode::convert($_, "utf8");} こんな感じです これは返ってきたものなので、そもそも返って来るものが違う場合もうお手上げです。 何がなにやら分かりません 上手に説明できませんでしたが、よろしくお願いいたします また教えてgooへの投稿に慣れていないもので至らない点あるかと思いますがご容赦ください

    • ベストアンサー
    • Perl
  • PDFファイル作成で、クセロPDF2というフリーソフトを使っています。

    PDFファイル作成で、クセロPDF2というフリーソフトを使っています。 外字を入力し、先方にメールで送ると、外字部分が文字化けするとのことです。文字化けを回避する方法はありますか?アクロバットならフォントの埋め込みとかでできるんでしょうか? あるいは、そもそもPDFでも外字は対応外なんでしょうか? よろしくお願いいたします。 WinXP SP3 MS-Office2007

  • じゃらんのAPIでRESTで取得したら文字化け

    はじめて質問です。失礼があったらご容赦ください。 じゃらんAPIのRESTで取得したXMLデータを、単にテキストで 書き出したいのですが、どうしても文字化けしてしまいます。 いろいろ試したのですがどうしても駄目でした。 以下がそのスクリプトです。 どなたかご教示いただければ幸いです。 (作業環境:Windows XP / Perl5.8) use encoding 'utf8'; use Encode; use LWP::Simple; my $key='xxxxxxxxx'; my $url="http://jws.jalan.net/APILite/HotelSearch/V1/?key=$key&pref=120000&l_area=120500&s_area=120508&h_type=1&start=1&count=1"; my $data=get($url) or die; open W,'>:utf8','MyNouhin.txt' or die; print W $data; close W;

  • ワードをPDFファイルで保存したら文字化けする。

    ワードは2007です。 仕事で頻繁にPDFファイルに保存しています。 いつもは全く問題なく保存できています。 今回、あるフォントのみが文字化けします。 そのフォントはLEGENDというフォントです。 PDFはAdobeのものです。 バージョンは1.5とプロパティーに記載されています。 Acrobat6.X とも書いています。 埋め込みサブセットという言葉がPDFのプロパティのLEGENDのところに書いています。 これは登録されているという意味と思うのですが。。。 エンコーディングはAnsiと書かれています。 他のフォントは文字化けしないのに、なぜこのフォントだけ文字化けするのでしょうか? 仕事でもうすぐこれを送信しないといけないのですが、 文字化けしないようにする方法はありますか?

  • index関数で日本語を使用する場合の問題(追加質問)

    7つ下で「index関数で日本語を使用する場合の問題」の質問をしましたが、 追加で質問させてください。 前回は use encoding "shiftjis"; を使用することで解決しました。 DOS窓のコマンドラインではこれで良かったのですが、 これをcgiにしてブラウザから表示させると文字化けします。 3行目の&ReadParseを外せば文字化けしないのですが、 &ReadParseを使用し、かつ、文字化けしない方法がありましたら ご教授いただけませんでしょうか。 =================================================== #!/usr/bin/perl require 'cgi-lib.pl'; &ReadParse(*in); use encoding "shiftjis"; $data = '東秀'; $key = '件'; $result = index($data,$key); print "Content-type: text/html\n\n"; print <<EOF; <html> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> テストです。<br> result = $result<br> </html> EOF =================================================== よろしくお願いします。

    • ベストアンサー
    • Perl
  • pdfで文字化け?

    pdfで文字化けということは起こるのでしょうか? 例えば、アラビア文字で書かれたpdfファイルを 送ってもらって、自分のパソコンにアラビア文字のフォントが無かった場合は、 文字化けして表示されるのでしょうか?

  • いきなりPDFでエクセルをPDF化すると文字化けして困ってます

    ソースネクストのいきなりPDFでエクセルファイルをPDF化すると文字化けしてしまいます。フォントは全て埋め込んでいる(詳細設定の「全て埋め込む」にチェック)のですが。どうしてなのでしょう。どなたかご教示ください。

  • AdobeAcrobat PDFが文字化けてしまいます

    HomePageを見ますと、文字化けはないのですが、 このHomePageをPDF化すると文字化けしてしまいます。 AcrobatWriterは、すべてのフォントを埋め込むという 設定にしているにもかかわらずです。 考えられる原因と対処方法を教えてください。

  • いきなりPDFについて

    いきなりPDFを使用し、エクセルファイルをPDFに変換したのですが、文字化けしてしまいます(数字は正しく表示される)。フォントの埋め込みで ”全てのフォントを埋め込む” にチェックを入れても解決しませんでした。 ※最近WindoWsのアップデートをした際にフォントが少し変わった(標準設定は "MS Pゴシック")のですが、何か関係があるのでしょうか? 解決方法を知っている方がいたら、教えて下さい。宜しくお願いします。

専門家に質問してみよう