web-dev-qa-db-ja.com

PHPを含むFPDFの特殊文字

ユーザーが記入できるWebフォームがあり、そのコンテンツはPDF FPDFとPHPでいっぱいです。ユーザーがアポストロフィでWordを入力すると、PDFの前にスラッシュが表示されます。

同様に、商標記号のような特殊文字は間違ってエンコードされます。

FPDFのよくある質問には、

$str = utf8_decode($str);

しかし、それをPDF全体に適用する方法がわからないだけです。私はそれをあたかもHTMLページであるかのように考えようとしていますが、それは助けにはなりません。

何か案は?

26
Carson

以下を実行して、これを理解しました(pagesubtitleはフォーム内のテキストフィールドの名前です):

$reportSubtitle = stripslashes($_POST['pagesubtitle']);
$reportSubtitle = iconv('UTF-8', 'windows-1252', $reportSubtitle);

次に、それを印刷します。

$pdf->Write (6, $reportSubtitle);

これにより、アポストロフィに続く不要なスラッシュが削除され、「iconv」関数を使用して™などの特殊文字が出力されます。

69
Carson

上記のすべてはうまくいきませんでしたが、うまくいきました。

私はすべての奇妙なキャラクターをそのurl値に変換するだけで「野barな方法」でそれを行うことができました。次に、URLと出来上がりをデコードするだけです!

function em($Word) {

    $Word = str_replace("@","%40",$Word);
    $Word = str_replace("`","%60",$Word);
    $Word = str_replace("¢","%A2",$Word);
    $Word = str_replace("£","%A3",$Word);
    $Word = str_replace("¥","%A5",$Word);
    $Word = str_replace("|","%A6",$Word);
    $Word = str_replace("«","%AB",$Word);
    $Word = str_replace("¬","%AC",$Word);
    $Word = str_replace("¯","%AD",$Word);
    $Word = str_replace("º","%B0",$Word);
    $Word = str_replace("±","%B1",$Word);
    $Word = str_replace("ª","%B2",$Word);
    $Word = str_replace("µ","%B5",$Word);
    $Word = str_replace("»","%BB",$Word);
    $Word = str_replace("¼","%BC",$Word);
    $Word = str_replace("½","%BD",$Word);
    $Word = str_replace("¿","%BF",$Word);
    $Word = str_replace("À","%C0",$Word);
    $Word = str_replace("Á","%C1",$Word);
    $Word = str_replace("Â","%C2",$Word);
    $Word = str_replace("Ã","%C3",$Word);
    $Word = str_replace("Ä","%C4",$Word);
    $Word = str_replace("Å","%C5",$Word);
    $Word = str_replace("Æ","%C6",$Word);
    $Word = str_replace("Ç","%C7",$Word);
    $Word = str_replace("È","%C8",$Word);
    $Word = str_replace("É","%C9",$Word);
    $Word = str_replace("Ê","%CA",$Word);
    $Word = str_replace("Ë","%CB",$Word);
    $Word = str_replace("Ì","%CC",$Word);
    $Word = str_replace("Í","%CD",$Word);
    $Word = str_replace("Î","%CE",$Word);
    $Word = str_replace("Ï","%CF",$Word);
    $Word = str_replace("Ð","%D0",$Word);
    $Word = str_replace("Ñ","%D1",$Word);
    $Word = str_replace("Ò","%D2",$Word);
    $Word = str_replace("Ó","%D3",$Word);
    $Word = str_replace("Ô","%D4",$Word);
    $Word = str_replace("Õ","%D5",$Word);
    $Word = str_replace("Ö","%D6",$Word);
    $Word = str_replace("Ø","%D8",$Word);
    $Word = str_replace("Ù","%D9",$Word);
    $Word = str_replace("Ú","%DA",$Word);
    $Word = str_replace("Û","%DB",$Word);
    $Word = str_replace("Ü","%DC",$Word);
    $Word = str_replace("Ý","%DD",$Word);
    $Word = str_replace("Þ","%DE",$Word);
    $Word = str_replace("ß","%DF",$Word);
    $Word = str_replace("à","%E0",$Word);
    $Word = str_replace("á","%E1",$Word);
    $Word = str_replace("â","%E2",$Word);
    $Word = str_replace("ã","%E3",$Word);
    $Word = str_replace("ä","%E4",$Word);
    $Word = str_replace("å","%E5",$Word);
    $Word = str_replace("æ","%E6",$Word);
    $Word = str_replace("ç","%E7",$Word);
    $Word = str_replace("è","%E8",$Word);
    $Word = str_replace("é","%E9",$Word);
    $Word = str_replace("ê","%EA",$Word);
    $Word = str_replace("ë","%EB",$Word);
    $Word = str_replace("ì","%EC",$Word);
    $Word = str_replace("í","%ED",$Word);
    $Word = str_replace("î","%EE",$Word);
    $Word = str_replace("ï","%EF",$Word);
    $Word = str_replace("ð","%F0",$Word);
    $Word = str_replace("ñ","%F1",$Word);
    $Word = str_replace("ò","%F2",$Word);
    $Word = str_replace("ó","%F3",$Word);
    $Word = str_replace("ô","%F4",$Word);
    $Word = str_replace("õ","%F5",$Word);
    $Word = str_replace("ö","%F6",$Word);
    $Word = str_replace("÷","%F7",$Word);
    $Word = str_replace("ø","%F8",$Word);
    $Word = str_replace("ù","%F9",$Word);
    $Word = str_replace("ú","%FA",$Word);
    $Word = str_replace("û","%FB",$Word);
    $Word = str_replace("ü","%FC",$Word);
    $Word = str_replace("ý","%FD",$Word);
    $Word = str_replace("þ","%FE",$Word);
    $Word = str_replace("ÿ","%FF",$Word);
    return $Word;
}

そしてもちろん、私は関数を呼び出します

$weirdword = "Días, Miércoles, Sábado,miércoles"; //Some spanish days
$weirdword = em($weirdword);
$weirdword = urldecode($weirdword);
echo $weirdword;

出力を与える:

ディアス、ミエルコレス、サバド、ミエルコレス

23
Oscar Bout

上記のどれも私の問題を解決しませんでした。次の方法で解決しました。

setlocale(LC_CTYPE, 'en_US');

$value = iconv('UTF-8', 'ASCII//TRANSLIT', $value);
$fpdf->Cell(140, 6, $value, 1);

お役に立てば幸いです。

参照:Link

6
MH2K9

上記の解決策のどれも私のために機能しなかったので、私はこのような問題を解決しました:

$this->AddFont('Arial','','arial.php');
$this->SetFont('Arial','',12);
$this->Cell(0,5,iconv("UTF-8", "CP1250//TRANSLIT", $string),0,1,'L');

上記の行を試す前に、次を実行します。

C:/Windows/Fonts/Arial.ttfからFPDFの/ tutorialフォルダーにコピーします。

Makefont.phpのコンテンツを編集します

require('../makefont/makefont.php');
MakeFont('arial.ttf','cp1250');

Makefont.phpを実行します

次のファイルをFPDFの/ fontフォルダーにコピーします。arial.php arial.ttf arial.z

最後に、「フォントフォルダ」を定義します。 fpdf.php(メインライブラリファイル)を開き、以下を追加します。

define('FPDF_FONTPATH','font');

PDFはすべての特殊文字で機能します。FPDFが元々使用しているArialフォント自体の問題であると考えています。幸運を!

4
tomazahlin

私のために以下が動作します(FPDFを使用):


function em_jaz($Word) {
$Word = str_replace('+', ' ', $Word);
$Word = str_replace("%C3%A9","%E9",$Word);          /* é */
$Word = str_replace("%C3%A8","%E8",$Word);          /* è */
$Word = str_replace("%C3%AE","%EE",$Word);          /* î */
$Word = str_replace("%26rsquo%3B","%27",$Word);     /* ' */
$Word = str_replace("%C3%89","%C9",$Word);          /* É */
$Word = str_replace("%C3%8A","%CA",$Word);          /* Ê */ 
$Word = str_replace("%C3%8B","%CB",$Word);          /* Ë */
$Word = str_replace("%C3%8C","%CC",$Word);          /* Ì */
$Word = str_replace("%C3%8D","%CD",$Word);          /* Í */
$Word = str_replace("%C3%8E","%CE",$Word);          /* Î */
$Word = str_replace("%C3%8F","%CF",$Word);          /* Ï */
$Word = str_replace("%C3%90","%D0",$Word);          /* Ð */
$Word = str_replace("%C3%91","%D1",$Word);          /* Ñ */
$Word = str_replace("%C3%92","%D2",$Word);          /* Ò */
$Word = str_replace("%C3%93","%D3",$Word);          /* Ó */
$Word = str_replace("%C3%94","%D4",$Word);          /* Ô */
$Word = str_replace("%C3%95","%D5",$Word);          /* Õ */
$Word = str_replace("%C3%96","%D6",$Word);          /* Ö */
$Word = str_replace("%C3%98","%D8",$Word);          /* Ø */                 
$Word = str_replace("%C3%99","%D9",$Word);          /* Ù */
$Word = str_replace("%C3%9A","%DA",$Word);          /* Ú */
$Word = str_replace("%C3%9B","%DB",$Word);          /* Û */
$Word = str_replace("%C3%9C","%DC",$Word);          /* Ü */
$Word = str_replace("%C3%9D","%DD",$Word);          /* Ý */
$Word = str_replace("%C3%9E","%DE",$Word);          /* Þ */
$Word = str_replace("%C3%9F","%DF",$Word);          /* ß */
$Word = str_replace("%C3%A0","%E0",$Word);          /* à */
$Word = str_replace("%C3%A1","%E1",$Word);          /* á */
$Word = str_replace("%C3%A2","%E2",$Word);          /* â */
$Word = str_replace("%C3%A3","%E3",$Word);          /* ã */
$Word = str_replace("%C3%A4","%E4",$Word);          /* ä */
$Word = str_replace("%C3%A5","%E5",$Word);          /* å */
$Word = str_replace("%C3%A6","%E6",$Word);          /* æ */
$Word = str_replace("%C3%A7","%E7",$Word);          /* ç */
$Word = str_replace("%C3%AA","%EA",$Word);          /* ê */
$Word = str_replace("%C3%AB","%EB",$Word);          /* ë */
$Word = str_replace("%C3%AC","%EC",$Word);          /* ì */
$Word = str_replace("%C3%AD","%ED",$Word);          /* í */
$Word = str_replace("%C3%AF","%EF",$Word);          /* ï */
$Word = str_replace("%C3%B0","%F0",$Word);          /* ð */
$Word = str_replace("%C3%B1","%F1",$Word);          /* ñ */
$Word = str_replace("%C3%B2","%F2",$Word);          /* ò */
$Word = str_replace("%C3%B3","%F3",$Word);          /* ó */
$Word = str_replace("%C3%B4","%F4",$Word);          /* ô */
$Word = str_replace("%C3%B5","%F5",$Word);          /* õ */
$Word = str_replace("%C3%B6","%F6",$Word);          /* ö */
$Word = str_replace("%C3%B7","%F7",$Word);          /* ÷ */
$Word = str_replace("%C3%B8","%F8",$Word);          /* ø */
$Word = str_replace("%C3%B9","%F9",$Word);          /* ù */
$Word = str_replace("%C3%BA","%FA",$Word);          /* ú */
$Word = str_replace("%C3%BB","%FB",$Word);          /* û */
$Word = str_replace("%C3%BC","%FC",$Word);          /* ü */
$Word = str_replace("%C3%BD","%FD",$Word);          /* ý */
$Word = str_replace("%C3%BE","%FE",$Word);          /* þ */
$Word = str_replace("%C3%BF","%FF",$Word);          /* ÿ */ 
$Word = str_replace("%40","%40",$Word);             /* @ */
$Word = str_replace("%60","%60",$Word);             /* ` */
$Word = str_replace("%C2%A2","%A2",$Word);          /* ¢ */
$Word = str_replace("%C2%A3","%A3",$Word);          /* £ */
$Word = str_replace("%C2%A5","%A5",$Word);          /* ¥ */
$Word = str_replace("%7C","%A6",$Word);             /* | */
$Word = str_replace("%C2%AB","%AB",$Word);          /* « */
$Word = str_replace("%C2%AC","%AC",$Word);          /* ¬ */
$Word = str_replace("%C2%AF","%AD",$Word);          /* ¯ */
$Word = str_replace("%C2%BA","%B0",$Word);          /* º */
$Word = str_replace("%C2%B1","%B1",$Word);          /* ± */
$Word = str_replace("%C2%AA","%B2",$Word);          /* ª */
$Word = str_replace("%C2%B5","%B5",$Word);          /* µ */
$Word = str_replace("%C2%BB","%BB",$Word);          /* » */
$Word = str_replace("%C2%BC","%BC",$Word);          /* ¼ */
$Word = str_replace("%C2%BD","%BD",$Word);          /* ½ */
$Word = str_replace("%C2%BF","%BF",$Word);          /* ¿ */
$Word = str_replace("%C3%80","%C0",$Word);          /* À */
$Word = str_replace("%C3%81","%C1",$Word);          /* Á */
$Word = str_replace("%C3%82","%C2",$Word);          /* Â */
$Word = str_replace("%C3%83","%C3",$Word);          /* Ã */
$Word = str_replace("%C3%84","%C4",$Word);          /* Ä */
$Word = str_replace("%C3%85","%C5",$Word);          /* Å */
$Word = str_replace("%C3%86","%C6",$Word);          /* Æ */
$Word = str_replace("%C3%87","%C7",$Word);          /* Ç */
$Word = str_replace("%C3%88","%C8",$Word);          `/`* È */
return $Word;
}

$ content = urlencode($ content);

$ content = urldecode($ pdf-> em_jaz($ content));

2
Jaspal Saini

このクラスは、UTF-8サポートを追加したFPDFの修正バージョンです。さらに、ドキュメントで使用されるフォントの必要な部分のみが埋め込まれるため、フォント全体が埋め込まれている場合よりもファイルサイズがはるかに小さくなります。これらの機能は、もともとmPDFプロジェクト用に開発されました。

http://fpdf.org/en/script/script92.php

1
Pascalmh