1

Bonjour,

Je souhaite générer des PDF avec prise en charge linguistique pour la Chine, Pologne, Russie, etc.

Grosso modo, pour l'instant, je n'arrive à générer des PDF que pour les pays européens qui utilisent les caractères latins standards (UTF8 / ISO8859-15 pour le signe €)

contexte d'utilisation : génération de propositions commerciales

J'ai vu qu'il y aurait une solution qui serait d'indiquer des polices à utiliser, ceci étant, j'ai un peu de mal à le faire.
J'ai vu la doc donnée sur les pages :
- http://wiki.spipu.net/doku.php?id=html2pdf:fr:v4:font
- http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf_fonts

J'utilisation serait la suivante si j'ai bien suivi:
$pdf = new HTML2PDF('P','A4',$language, $unicode, $encoding, array($mL, $mT, $mR, $mB));
$pdf->pdf->SetDisplayMode('fullpage');
$pdf->pdf->AddFont($family, $style, $fontfile);

$family // A quoi cela correspond concrètement ?
$style // A quoi cela correspond concrètement ?
$fontfile // Fichier de la font ttf ou autre présent dans un répertoire du projet
[edit]Bon, ben j'ai trouvé grin[/edit]

Autre chose :
Pour la construction de l'objet HTML2PDF:
$pdf = new HTML2PDF('P','A4',$language, $unicode, $encoding, array($mL, $mT, $mR, $mB));


Comment puis-je définir la variable $language à polonais ou chinois ? Je demande ça car lorsque je mets 'cn' pour chine ou 'pl' ou 'pln' pour polonais j'ai droit à une jolie erreur lors de la visualisation car ces langages n'existent pas dans la lib.
[edit]Ok, trouvé, il faut que je définisse en nouveau fichier pour chaque langage ^^. Je les ferai parvenir une fois qu'ils seront faits[/edit]

[edit]Même si j'ai trouvé plein de réponses à mes questions, bennnnn, j'ai toujours des erreurs/caractères manquants lors de la génération[/edit]

[edit]
J'ai récupéré des fonts (ttf) polonaies, certaines comportaient des erreurs
J'ai donc été sur http://fpdf.fruit-lab.de/index.php
J'ai regénéré mes fonts pour FPDF (4 fichiers : php/afm/t1a/z)
testé
Toujours sans succès, les caractères spéciaux n'apparaissent pas, et si je mets un encodage comme iso-8859-16 ou cp1250, j'ai droit à un PDF corrompu. why ?
[/edit]

Merci smile

2

as-tu testé l'exemple en UTF8 ? car il est normalement assez complet pour afficher n'importe quelle caractère il me semble
Ancien pseudo : lolo

3

J'ai testé en UTF8, ceci étant, il y a des caractères qui ne sont pas pris en comptes.

€ absent
et caractères spéciaux (chinois/polonais, etc) remplacés par des ?

J'ai même tenté d'utiliser une font adaptée à la langue ainsi que Arial

J'ai du loupé quelque chose #iconpaf#

4

Bonjour,

Y a t il moyen d'utiliser ISO-8859-2 pour la génération de PDF en Polonais ?
Je demande ça car lorsque j'utilise cet encodage, le PDF que j'ouvre est considéré comme "N'est pas un PDF ou corrompu." donc en gros, soit il n'est pas généré soit il n'est pas complet.

J'ai testé l'ISO-8859-2 en unicode et non unicode (mais normalement ce doit être du non unicode), sans succès.

et testé avec la font par défaut, arial.ttf, arial recréée en PHP (via http://fpdf.fruit-lab.de/index.php?id=3) et avec les police appropriées (Cieszyn ou Euro Courrier en ttf et en PHP) directement sous format TTF, j'ai un problème avec certains caractères lors de la génération (le @ pour Cieszyn et le < pour Euro Courrier (ça je pense que vous n'y pouvez rien))


J'ai testé aussi en UTF8 toujours sans succès (unicode et non unicode) car les caractères polonais sont remplacés par des correspondances :

Exemple : ? (unicode) ou Å• (non unicode) à la place du Ł

idem pour ISO-8859-15

Si vous avez une idée, je suis preneur.

5

là maleureusement, je ne vois pas trop.

dans l'exemple UTF8 fournit, ces caractères sont-ils présents ? et si oui, sont-ils bien rendu ?
Ancien pseudo : lolo

6

En effet les caractères passent bien dans l'exemple UTF8 (http://html2pdf.fr/_html2pdf/exemples/utf8.php?vuehtml)

du coup, j'en reste coi

A tous les coups c'est a cause d'une surcharge UTF-8 ou du fait que les éléments de la page arrivent au PDF en ISO-8859-15.

d'où le fait qu'il me faut passer par ISO8859-15 pour avoir un affichage correcte en FR/ES/EN/DE

[EDIT]Je viens de regarder l'encodage du stream que je récupère : UTF-8.... [/EDIT]

7

Pourrais je avoir le source qui a permis de générer l'exemple UTF8 ?

De mon coté j'ai épuré pas mal de choses dans mon source pour m'approcher le plus possible du votre

[code]
public function createNewPdf($html, $pdfFullPath, $debug=0){
$mL = 5;
$mT = 2;
$mR = 5;
$mB = 2;

$handle = fopen($html, "rb");
$contents = stream_get_contents($handle);
fclose($handle);

$pdf = new HTML2PDF('P','A4','fr', array($mL, $mT, $mR, $mB));
$pdf->pdf->SetDisplayMode('fullpage');
$pdf->writeHTML($contents, $debug);
$pdf->Output($pdfFullPath, F); [/list]
}
[/code]

Ceci étant, j'ai toujours des caractères non affichés :
Exemple : ? (unicode) à la place du Ł;

8

tous les exemples sont dans le répertoire exemple du zip wink
Ancien pseudo : lolo

9

Evidemment si je ne regarde pas dans le répertoire exemple mais uniquement sur le site ... #iconpaf#

10

J'ai mis
style="font-family: freeserif" dans ma balise <page> de mon corps HTML
==> <page format="A4" style="font-family: freeserif" orientation="P" backtop="225px" backbottom="80px" backright="10mm">

et j'ai l'erreur suivante
TCPDF ERROR: Font file not found: freeserif.ctg.z


Comment la corriger ? je n'ai pas vu dans les exemples ?

Pour mon controller :
<?php
class PdfController extends HTML2PDF{

public function __construct() {

}

/**
* @desc Création d'un nouveau PDF pour les propositions
* @param unknown_type $titre
* @param unknown_type $emetteur
* @param unknown_type $hParams
* @param unknown_type $pdfPath
*/
public function createNewPdf($html, $pdfFullPath, $debug=0){
$mL = 5;
$mT = 2;
$mR = 5;
$mB = 2;
try {
$handle = fopen($html, "rb");
$contents = stream_get_contents($handle);
fclose($handle);

$pdf = new HTML2PDF('P','A4','fr', array($mL, $mT, $mR, $mB));
$pdf->pdf->SetDisplayMode('real');
$pdf->writeHTML($contents, $debug);
$pdf->Output($pdfFullPath);
// exit;
}
catch(HTML2PDF_exception $e) {
echo $e;
}
}
}
?>


Le require est fait au chargement du site.

11

tu as lu le fichier exemple08.php ?
Ancien pseudo : lolo

12

Oui
Si tu fais mention du changement de Charset, j'avais déjà testé, mais je dois rester sur UTF_8 (ce que tu fais dans l'exemple UTF_8);

Pour l'inclusion et le ob_start/ob_get_clean() pas encore testé

En même temps je fais appel à une URL (à la mode Zend), je doute que l'include accpete.

ce que je ne comprends pas c'est que les caractères sont bien passés au stream.

La seule grosse nuance entre nos deux codes est l'appel à la font-family. Ceci étant, je me fais envoyer balader.

Dans l'exemple utf8, y a t il quelque chose que je n'aurai pas vu qui concerne la font freeserif ? Est ce cette fonte qui permette l'affichage des caractères spéciaux ou bien puis je utiliser une autre fonte comme arial ? si oui, lorsque je la recompile (format php) quel encodage laisse-je ?

13

ben je n'ai pas l'exemple sous les yeux, mais de mémoire, il faut charger une fonte avant de l'utiliser...
Ancien pseudo : lolo

14

Il manquait les fichiers :
freeserif.ctz
freeserifb.ctz
freeserifbi.ctz
freeserifi.ctz

Pour tester, je les ai mis dans le répertoire html2fpdf/_tcpdf/fonts
Ça a l'air de passer, mais ca ne change rien à mon problème de fontes, alors qu'en mode debug (affichage html) aucun souci, tout est là, quelque soit la fonte

15

J'ai testé en local les exemples fournit dans la lib. Il manque bien le fichier freeserif.ctg.z et ceux qui suivent ^^
TCPDF ERROR: Font file not found: freeserif.ctg.z

J'imagine que je dois construire la fonte

16

Résolu pour le polonais, c'était un problème de fichiers ctg.z manquant

J'ai testé avec du dejavuserif : nickel pour le polonais merci

17

Maintenant au tour du chinois.
Sais tu quelle police gère le chinois ? Et comment générer les fichiers ctg.z ?

comme ca je génèrerai la police pour le chinois.

18

pour le chinois, je ne sais pas trop.

pour générer une nouvelle fonte : http://wiki.spipu.net/doku.php?id=html2pdf:fr:v4:font
Ancien pseudo : lolo

19

Ok je regarderai ça après manger.
Merci en tous cas

20

Nickel, tout fonctionne

Je suis en train de voir pour faire la cerise sur le gâteau : PDF en russe

21

Et tu as utilisé quelle police pour le chinois au final ??

22

up ? quelle police as-tu utilisé pour le chinois ?

C'est bien gentil de dire que t'as trouvé mais le but est d'en faire partagé tout le monde, j'ai passé 2 jours à avoir ma réponse alors que t'aurai pu faire partager tes trouvailles... merci

Pour ceux qui tomberont sur ce topic :

=> la police pour le chinois est "arialunicid0"

mais aussi :

=> arabe : almohanad

=> russe : freesans

23

Merce sellas - j'avais trouvé 'freesans' déjà, parce qu'utilisé dans l'example. Mais merci pour l'arabe et le chinois, plus difficiles à deviner.
html2pdf 4.03