PDF 生成時の文字エンコーディングの問題
PDF を生成するときに、「Č」や「Ć」などのチェコ語の文字が正しく表示されませんでした。この問題は、文字エンコーディングやフォントの選択など、さまざまな要因によって発生します。
エンコーディングに関するメモ
まず第一に、中央および東ヨーロッパの言語で使用されるキリル文字とラテン文字を区別することが重要です。コード ページ 1250 および 1251 は、これらの領域の異なる文字エンコーディングを表します。
テキストエンコーディングの練習
Unicode は、最新のアプリケーションに推奨されるテキスト エンコード標準です。ただし、コード ファイルをプレーン テキストで保存すると、エンコードが誤って変更された場合にデータが破損する可能性があります。特殊文字をコードに直接含めるのではなく、u 表記を使用して特殊文字を表すことを検討してください。
フォントの選択
Helvetica はチェコ語の文字のレンダリングには適していません。 Arial または FreeSans の方が良い選択です。さらに、embed パラメーターを true に設定すると、フォントが PDF に含まれるようになり、異なるシステム間で一貫したレンダリングが可能になります。
フォントエンコーディング
埋め込みフォントを使用する場合、フォントのエンコーディングを指定できます。 Cp1250 はコード ページ 1250 エンコーディングを指定し、各文字のシングルバイト表現を生成します。あるいは、IDENTITY_H は、1 文字あたり複数バイトを使用する Unicode エンコーディングを表します。 PDF/A や PDF/UA などの最新の標準では、Unicode エンコードが推奨されます。
例
次のコードは、Cp1250 および IDENTITY_H エンコーディングで FreeSans フォントを使用するソリューションを示しています。
<code class="language-java">public static void createPdf(String dest) throws IOException, DocumentException { Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream(dest)); document.open(); // Cp1250 编码 Font f1 = FontFactory.getFont("resources/fonts/FreeSans.ttf", "Cp1250", true); Paragraph p1 = new Paragraph("测试字母 \u010c,\u0106,\u0160,\u017d,\u0110", f1); document.add(p1); // Unicode 编码 Font f2 = FontFactory.getFont("resources/fonts/FreeSans.ttf", BaseFont.IDENTITY_H, true); Paragraph p2 = new Paragraph("测试字母 \u010c,\u0106,\u0160,\u017d,\u0110", f2); document.add(p2); document.close(); }</code>
結論
PDF 生成で国際文字を処理するのは簡単な作業ではありません。文字エンコーディングとフォント選択を適切に処理することは、テキストを正確に表現するために重要です。以上がPDF を生成するときにチェコ語文字 (Č、Ć など) を正しく表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。