36

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

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

FPDF の FAQ では、以下を使用するように指示されています。

$str = utf8_decode($str);

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

何か案は?

4

10 に答える 10

80

次のようにしてこれを理解しました (pagesubtitle は、フォーム内のテキスト フィールドの名前です)。

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

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

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

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

于 2010-08-25T18:54:18.407 に答える
25

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

すべての奇妙な文字をそのURL値に変換するだけで、「野蛮な方法」でそれを行うことができました。次に、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;

出力を与える:

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

于 2012-11-02T09:41:54.483 に答える
9

上記の解決策はどれもうまくいかなかったので、次のように問題を解決しました。

$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 フォント自体に問題があると思います。あなたの文字をサポートしていれば、他のフォントでも動作するはずです。幸運を!

于 2013-11-15T10:43:22.263 に答える
1

これは私のためにそれをしました: iconv("UTF-8", "ISO-8859-1//TRANSLIT//IGNORE", your-text-var-here )

于 2021-03-16T13:18:26.753 に答える
1

このクラスは、UTF-8 サポートを追加する FPDF の修正バージョンです。また、文書に使用されているフォントのうち必要な部分だけを埋め込むため、フォント全体を埋め込む場合に比べてファイルサイズが大幅に小さくなります。これらの機能は、もともと mPDF プロジェクト用に開発されました。

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

于 2014-10-17T08:58:14.083 に答える
0

特殊文字が「°C」であると仮定して、この方法でエンコードする必要があります

> $pdf->Cell(X(int),Y(int),iconv("UTF-8", "CP1250//TRANSLIT", '°C'));
于 2021-12-20T02:59:37.623 に答える
-2

この単純な関数を試してください: utf8_encode($txt). わたしにはできる。

于 2016-05-31T14:22:08.090 に答える