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 ?

Comment puis-je afficher correctement les caractères tchèques (Č, Ć, etc.) lors de la génération de PDF ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-13 21:46:52736parcourir

How Can I Correctly Display Czech Characters (Č, Ć, etc.) When Generating PDFs?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn