• 締切済み

TCPDFの多言語について

TCPDFの多言語の出力につてご質問です。 フォームのテキストエリアの内容をPDFとして出力したいのですが、テキストエリアに日本語、英語、タイ語、ベトナム語が入る想定です。 下記は試したソース・結果になります。どのようにすれば良いのか解らずこまっております。 解る方いましたらご回答お願い致します。 ■ソース1 $pdf->SetFont('ipag'); $pdf->MultiCell(100,100,'テストTestทดสอบkiểm tra',0,'L',0,1,0,0,false,0,true,false,false); ■結果1 テストTest◩◩◩◩ki◩mtra ■ソース2 $pdf->SetFont('dejavusans'); $pdf->MultiCell(100,100,'テストTestทดสอบkiểm tra',0,'L',0,1,0,0,false,0,true,false,false); ■結果2 ◩◩◩Test◩◩◩◩kiểm tra ■ソース3 $pdf->SetFont('thsarabun'); $pdf->MultiCell(100,100,'テストTestทดสอบkiểm tra',0,'L',0,1,0,0,false,0,true,false,false); ■結果3 ◩◩◩Testทดสอบkiểmtra

みんなの回答

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.2

・まず、言語検出 ・次に その言語に対応したフォントを適用 → $pdf->SetFont('[対応したフォント]'); と、単純に思ったのですが、正直どうなんでしょうねぇ。。

bgbwq712
質問者

お礼

回答ありがとうございます、遅くなり申し訳ありません。 上記の内容ですが、テキストエリアには複数の言語が入る可能性があるため。 setFont->('フォント') setText(POSTで受けった内容') としてsetFontした言語の内容は表示されますが、その他の言語が文字化け致します。 やはり難しいですよね。。。

全文を見る
すると、全ての回答が全文表示されます。
  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.1

深く考えずに回答してますけど、フォントが対応していない気がするので、言語を検出してフォント切り替えれば良いのではなかろうかと思ったり。 Google 翻訳 API で言語検出できるらしいですけど、有料になっちゃってるっぽいですね。 ま、選択肢の一つとして。という感じで。 http://kenz0.s201.xrea.com/weblog/2009/05/language_detection_googleapi.html http://techbooster.org/android/14280/ https://developers.google.com/translate/

bgbwq712
質問者

お礼

ご回答ありがとうございます。 少し考えてみたのですが具体的な記述が思いうかびません。 複数言語が混在する中で仮に言語を検出?できた場合の具体的なソースとはどのようになりますか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • PHPでPDF表示した時のファイル名

    分かる方がいれば教えて下さい。 PHPでTCPDFを使用して、PDF表示を下記のように行っています。 require_once ("tcpdf/tcpdf.php"); $pdf = new TCPDF("L", "mm", "A4", true, "UTF-8" ); $pdf->setPrintHeader(false); $pdf->setPrintFooter(true); $pdf->SetFooterMargin(PDF_MARGIN_FOOTER); $pdf->SetFont('kozgopromedium', '', 10); $pdf->AddPage(); $pdf->SetFont('kozgopromedium', '', 20); //フォントをIPA Pゴシック $pdf->SetMargins(10, 10, true); $pdf->Write(10,[PDF表示内容], "", false, 'C', true, 0, false, 0, ""); $pdf->SetFont('kozgopromedium', '', 10); $pdf->writeHTML($css . str_replace("caption","h1",$i), true, 0, true, false,'C'); $pdf->Output("test.pdf", "I"); PDFの作成(表示)は正常に出来るのですが、PDFのファイル名が指定した”test.pdf”にならずに PHPファイル名になってしまいます。 ※このソースが書かれているPHPファイル名が”CreatePdf.php”だとすると、PDFファイル名が  ”CreatePdf.pdf”になってしまいます。 いろいろと調べたのですが、原因が分からないのでご質問しました。 PHP Version:5.4.7 TCPDF Version: 5.9.205 宜しくお願いします。

    • ベストアンサー
    • PHP
  • FPDF・TCPDFでの画面端のテキスト表示の件

    PHPでPDFを作成しようと、FPDFやTCPDFを使って 作業をしている際に問題が起きたため、質問させて頂きます。 TCPDFを用いて下記のようなコードを実行したところ、 文字が画面内に収まらず、A4の2枚目の上端に テキストが表示されてしまいました。 つまり、画面からはみ出した状態になってしまった訳です。 --------------------------------------------------------------------------------- <?php require_once 'tcpdf.php'; $pdf = new TCPDF("L", "mm", "A4", true, "UTF-8" ); $pdf->setPrintHeader(false); $pdf->setPrintFooter(false); $pdf->SetMargins(0, 0, 0); $pdf->AddPage(); $pdf->SetFont('kozminproregular', '', 12); $pdf->Text(0, 190, "ほげほげ" ); $pdf->Output("test.pdf", "I"); ?> --------------------------------------------------------------------------------- A4(横)は、297mm×210mmですから、 文字の表示を指定した高さからは、2cmの 余裕があるかと思います。 ですので、画面内に表示してもらいたいところなのですが、 これは私のコードがおかしいからなのでしょうか? なお、同様の現象は、FPDFでも確認しております。 何かご存知の方は、ご教示いただけば幸いです。 お手数をお掛けしますが、どうぞ、よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 独自のヘッダー、フッターの出力について

    MBFPDF(FPDF)クラスに独自のHeader()、Footer()を作成してPDFを出力しています。 ※独自で作成したHeader()、Footer()はMBFPDF(FPDF)クラスに継承しています。 ※MBFPDF(FPDF)クラスでは正常にPDF(Header、Footer)を出力しています。 訳あってTCPDFでPDFを出力するようにプログラムを変更していますが全然、出力されず何が原因で出力されないのかを調べていますが全然、わからず投稿しました。 ※内容は下記の感じです。 require_once('tcpdf/tcpdf.php'); class TCPDF2 extends TCPDF{   var $p_Data1 = NULL;   var $p_Data2 = NULL;   function setData1($pValue){     $this->p_Data1 = $pValue;   }   function setData2($pValue){     $this->p_Data2 = $pValue;   }   function Header(){     $this->Cell(20, 10, $this->p_Data1);   }   function Footer(){     $this->Cell(20, 10, $this->p_Data2);   } } $pdf = new TCPDF2("L", "mm", "A5", true, "UTF-8"); $pdf->SetMargins(10.0, 10.0, 10.0); $pdf->SetFont('ipagp', '', 10); $pdf->setPrintHeader(true); $pdf->setPrintFooter(true); $pdf->SetAutoPageBreak(true, 10.0); $pdf->AddPage(); $pdf->SetDisplayMode("fullpage", "continuous"); $pdf->Output(); ソースコードから抜粋していますがこんな感じで記述しています。 下記の関数で設定したりしましたが全然変わらず出力できませんでした。 $pdf->SetHeaderData(); $pdf->setHeaderFont(array('ipagp', '', 10)); $pdf->setFooterFont(array('ipagp', '', 10)); $pdf->SetHeaderMargin(10.0); $pdf->SetFooterMargin(10.0); 申し訳ありませんがアドバイス宜しくお願いします。

    • 締切済み
    • PHP
  • VBA  PDF ファイル名をセルからつける

    ExcelでPDFを出力するときに、たとえばB1のセルに入力されているものを、ファイル名の一部として出力する方法がわかりません。 例えばB1に「資料1」と入力されていた場合で、PDFのファイル名を[TEST資料1.pdf]にしたい場合、下記に何かを足すだけでできますでしょうか? ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "I:\補TEST\TEST.pdf", Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ True End Sub できれば、解説もいただけると助かります。よろしくお願いします。

  • pythonコードについて

    以下のpythonコードに関して質問があります。なぜ一度Falseになったatsplitがforループ内で再びTrueになるのでしょうか?以下にコードと結果を掲載しております。 def split_string(source,splitlist): output = [] atsplit = True for char in source:    if char in splitlist:      atsplit = True      print atsplit    else:       if atsplit:          output.append(char)          atsplit = False          print atsplit       else:          output[-1] = char return output out = split_string("This is a test-of the,string separation-code!"," ,!-") print out #>>> ['This', 'is', 'a', 'test', 'of', 'the', 'string', 'separation', 'code'] False True False True False True False True False True False True False True False True False True ['This', 'is', 'a', 'test', 'of', 'the', 'string', 'separation', 'code']tsplit = True

  • 現在のフォルダからテキストを読み込むエクセルマクロ

    小さな会社で事務仕事をしております。 仕事上、困ったことがあり、どなたか教えて頂きたいです。 テキストファイルをエクセルに読み込み、 ある文字にて区切り、セルに張りつけたいのです。 テキストの数が多いため、マクロを作成したいと思っております。 マクロの記録にて下記(ソース)まで来ているのですが、 実際にやりたいのは、 「現在のエクセルブックと同じフォルダにある」テキストファイルを読み込むことなのです。 私が記録したマクロでは、「固定フォルダ」になっており、 例えば、フォルダ名が変わってしまうと、動作しません(テキストを読み込めません)。 Sub Macro3() ' ' Macro3 Macro ' ' With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;C:\Users\crown_800\test.txt", Destination:= _ Range("$A$1")) .Name = "test" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 932 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = True .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = True .TextFileOtherDelimiter = "[" .TextFileColumnDataTypes = Array(1, 1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With End Sub Webにてカレントディレクトリの取得方法を勉強し、 下記ソースに反映しようとはしているのですが、うまくいきません。 どなたかご相談に乗って頂けないでしょうか? よろしくお願いいたします。

  • 現在のフォルダからテキストを読み込むエクセルマクロ

    小さな会社で事務仕事をしております。 仕事上、困ったことがあり、どなたか教えて頂きたいです。 テキストファイルをエクセルに読み込み、 ある文字にて区切り、セルに張りつけたいのです。 テキストの数が多いため、マクロを作成したいと思っております。 マクロの記録にて下記(ソース)まで来ているのですが、 実際にやりたいのは、 「現在のエクセルブックと同じフォルダにある」テキストファイルを読み込むことなのです。 私が記録したマクロでは、「固定フォルダ」になっており、 例えば、フォルダ名が変わってしまうと、動作しません(テキストを読み込めません)。 Sub Macro3() ' ' Macro3 Macro ' ' With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;C:\Users\crown_800\test.txt", Destination:= _ Range("$A$1")) .Name = "test" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 932 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = True .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = True .TextFileOtherDelimiter = "[" .TextFileColumnDataTypes = Array(1, 1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With End Sub Webにてカレントディレクトリの取得方法を勉強し、 下記ソースに反映しようとはしているのですが、うまくいきません。 どなたかご相談に乗って頂けないでしょうか? よろしくお願いいたします。

  • Wordマクロ

    Wordでワイルドカードを使った置換マクロを作ったのですが、 「MatchWildcardsとMatchSoundsLike、MatchAllWordForms、MatchFuzzyは、同時にTrueに設定することはできません。」 というエラーが出てしまいます。 MatchSoundsLike、MatchAllWordForms、MatchFuzzyは、 ソースに書いてないしTrueにもしていません。 どこが悪いのでしょうか? 以下がソースファイルです、よろしくお願いいたします。 Sub substitute() ' Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "[!a-f]{1,}" .Replacement.Text = "@" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True .MatchFuzzy = False End With Selection.Find.Execute Replace:=wdReplaceAll End Sub

  • エクセルVBAにてURLの抽出

    エクセルVBAのマクロを用いてテキスト(ソースコード)よりURLを取得したいと考えています。 <a href="**"> 左記の「**」を取得し、エクセル上に 一覧として出力するものを想定しています。 なお、ソース上にhrefのコードは複数存在するので、 それら全てを出力したいのです。 以下が出力希望例になります。 <a href="http://www.test.co.jp"> <script type="text/javascript"> <a href="http://www.test2.co.jp"> 出力結果 http://www.test.co.jp http://www.test2.co.jp 諸事情があり、テキストを読み込んでエクセル上に取得する形式でお願いしたいです。 すみませんが、よろしくお願いします。

  • C#でアクセス権限の取得方法が知りたいです。

    指定したフォルダのアクセス権限を取得し、「書き込み権限が無い」場合エラーを出力したいのですが、 良い方法があれば教えていただけますでしょうか。 開発環境は、visualC#を使っています。 現在圧縮を行う ⇒ ファイルを出力する ⇒ 出力先に書き込み権限がなかった場合、エラーを出力する というプログラムを書いています。 そこでアクセス権限を取得したいです。 AccessControlType AccountName FileSystemRights IsInherited Allow NT AUTHORITY\SYSTEM FullControl False Allow BUILTIN\Administrators FullControl False Allow BUILTIN\Users ReadAndExecute, Synchronize False Allow NT SERVICE\TrustedInstaller FullControl True Allow BUILTIN\Administrators ReadAndExecute, Synchronize True Allow NT AUTHORITY\SYSTEM ReadAndExecute, Synchronize True Allow BUILTIN\Users ReadAndExecute, Synchronize True GetAccessControlメソッドで、上記のように各権限をテキストで出力する事はできるのですが、 「書き込み権限が無い場合」という条件をif文で判別する場合どのようにすれば良いか悩んでします。 このような出力でアクセス権限を取得しなくても、 書き込み権限があるかどうか判別する為のメソッド(返り値としてtrue or false)があるのか。 このテキストでの出力から文字列操作でtrueかfalseを抜いて、 フルコントロールもしくはユーザの書き込み権限いずれかの部分がtrueになっているのを確認しなければいけないのか。 ご教授いただけないでしょうか。 よろしくお願い致します。