Maison >développement back-end >C++ >Comment puis-je afficher correctement les caractères tchèques (Č, Ć, etc.) lors de la génération de PDF ?
Problèmes d'encodage des caractères dans la génération PDF
Les caractères tchèques tels que "Č" et "Ć" n'étaient pas affichés correctement lors de la génération de PDF. Ce problème provient de divers facteurs, notamment le codage des caractères et la sélection des polices.
Notes d'encodage
Tout d'abord, il est important de distinguer les alphabets cyrillique et latin utilisés dans les langues d'Europe centrale et orientale. Les pages de codes 1250 et 1251 représentent différents codages de caractères pour ces régions.
Pratique d'encodage de texte
Unicode est la norme de codage de texte recommandée pour les applications modernes. Cependant, l'enregistrement du fichier de code en texte brut peut entraîner une corruption des données si l'encodage est accidentellement modifié. Pensez à utiliser la notation u pour représenter les caractères spéciaux au lieu de les inclure directement dans votre code.
Sélection des polices
Helvetica ne convient pas au rendu des caractères tchèques. Arial ou FreeSans sont de meilleurs choix. De plus, définir le paramètre embed sur true garantit que les polices sont incluses dans le PDF pour un rendu cohérent sur différents systèmes.
Encodage des polices
Lorsque vous utilisez des polices intégrées, vous pouvez spécifier l'encodage de la police. Cp1250 spécifie le codage de la page de codes 1250, produisant une représentation sur un seul octet pour chaque caractère. Alternativement, IDENTITY_H représente le codage Unicode, qui utilise plusieurs octets par caractère. Pour les normes modernes telles que PDF/A et PDF/UA, le codage Unicode est recommandé.
Exemple
Le code suivant illustre une solution utilisant les polices FreeSans dans les encodages Cp1250 et IDENTITY_H :
<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>
Conclusion
La gestion des caractères internationaux dans la génération PDF n'est pas une tâche facile. Une gestion appropriée du codage des caractères et de la sélection des polices est essentielle à une représentation précise du texte.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!