1


Comment utiliser les jeux de characters "supportes" par FPDF dans HTML2PDF, genre cp1251 ?

2

normalement, si il marche sous FPDF, il faut utiliser la même technique pour HTML2PDF.

quel est ton pb exactement ?
Ancien pseudo : lolo

3

Ben, j'ai un code html genere en UTF-8, je lui passe un $html=iconv('UTF-8','cp1251//TRANSLIT',$html), qui me genere un cote HTML en CP1251 (je vois sur firefox que l'encodage est bien cp1251)

puis je le passe dans HTML2PDF, et la, tous les charactere cyrillic sont transformes en ÷ÁÛ ÁÇÅÎÔ : ïÌØÇÁ ôÕÚÏ×Á .....
(note que mes docs PDF en Anglais passsent tres bien dasn HTML2PDF)

4

et ces meme charactères marchent sous FPDF ?
Ancien pseudo : lolo

5

ben, FPDF dit que CP1251 est supporte (comme cp1252, isoXXX, etc...) (mais pas utf-8), donc je pense que HTML2PDF doit se conformer a ce que fait FPDF, mais visiblement il y a un truc que je ne comprends pas entre les 2

6

Existe-t-il une methode dans la classe HTML2PDF qui indique quel "encoding" on utilise ?

7

Argh, je viens de regarder dans mon code, et j'ai mis cette ligne là dans le fichier html2pdf.class.php, vers la ligne 1700 de la méthode o_WRITE :

$txt = html_entity_decode($txt, ENT_QUOTES, 'ISO-8859-15');

A tous les coups, c'est ca qui fou la merde. essaye de le changer / manipuler pour voir ce que ca donne smile et indique nous tes résultats, ca pourrait servir pour un futur correctif !
Ancien pseudo : lolo

8

ahahahahaha le bon codage en dur ;-)

J'ai rajotue dans la classe HTTP2PDF

var $encoding = 'ISO-8859-15';

function HTML2PDF($sens = 'P', $format = 'A4', $langue='fr', $marges = array(5, 5, 5, 8), $force_page = false, $encoding='ISO-8859-15')
{

...

$this->encoding=$encoding;

...
}

puis dans o_WRITE:

$txt = html_entity_decode($txt, ENT_QUOTES, $this->encoding);

Pas beaucoup de progres cepandant sur le format de sortie. Exist-t-il un autre endroit avec un ISO-8859 ?

9

LoL, je venais de faire de même.

par contre, il vaut mieux que tu ne touches pas au constructeur, car il est utilisé pour la création de sous objet HTML2PDF, et ca risque de foiré. Il vaut créer une methode setEncoding();

et rajoute également dans la méthode createSubhtml une ligne du style $subhtml->setEncoding($this->encoding); car sinon tu ne passera pas l'encodage quand HTML2PDF créé des sous éléments pour les tableaux.

enfin, il faut que ta fonte soit compatible.

as-tu essayé sous FPDF si tes caractères apparaissaient normalement ?
Ancien pseudo : lolo

10

Comment je peux tester mes polices sous FPDF ?

11

Ok, mes fonts s'affichent bien sous FPDF
reste a voir pourquoi HTML2PDF ne les prends pas ...

12

C'est le passage a SubHTML qui merdoie... une idee ?

je fais HTML2PDF d'un texte simple, ca marche nickel, mais des que cé st dans un tableau, ca merdoie, d'ou ma suspission pour le SubHTML...

J'ai rajoute:
function setEncodingFont($font)
{
$this->encoding_font=$font;
if(strlen($font)>0)
{
$this->pdf->SetFont($font);
}
}

puis dans le subHtml:
$sub_html->setEncodingFont($this->encoding_font);

13


GOT IT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

I added in o_Write (in addition to the above)

if(strlen($this->encoding_font)>0)
{
mail('admin@grosjo.net','HTML2PDF',"SetFont($this->encoding_font)");
$this->pdf->SetFont($this->encoding_font);
}

PARTY TIME !!!!!

14

Par contre, je perds le gras / italique/ etc...

15

BILAN DES COURSES:

class HTML2PDF
{

...

var $encoding = 'ISO-8859-15';
var $encoding_font = '';
....

function setEncoding($encoding)
{
$this->encoding=$encoding;
}

function setEncodingFont($font)
{
$this->encoding_font=$font;
$this->style->value['font-family']=$font;
}


....

function CreateSubHTML(&$sub_html, $cellmargin=0)
{
// initialisation du sous objet
$sub_html = new HTML2PDF(
$this->sens,
$this->format,
$this->langue,
array($this->defaultLeft,$this->defaultTop,$this->defaultRight,$this->defaultBottom),
true
);
$sub_html->setEncoding($this->encoding);
$sub_html->setEncodingFont($this->encoding_font);
....
}

}


------------------


Mon appel de fonction:

if($russian>0)
{
$encoding='cp1251';
}
else
{
$encoding='ISO-8859-15';
}
$html2pdf = new HTML2PDF($orient,$size,'fr', array(8, 8, 8, 8),true);
$html2pdf->setEncoding($encoding);
$html2pdf->pdf->SetDisplayMode('fullpage');
if($russian>0)
{
$html2pdf->AddFont('VerdanaRU','','verdanaru.php');
$html2pdf->AddFont('VerdanaRU','B','verdanaruB.php');
$html2pdf->AddFont('VerdanaRU','I','verdanaruI.php');
$html2pdf->AddFont('VerdanaRU','BI','verdanaruBI.php');

$html2pdf->SetEncodingFont('VerdanaRU');
}
$html2pdf->WriteHTML($html);
return $html2pdf->Output('doc.pdf','S');

16

Heu, normalement tu n'as pas besoin de tout ce qui est EncodingFont. Tu devrais pouvoir juste te contenter de ceci :

class HTML2PDF
{

  ...
  var $encoding = 'ISO-8859-15';
  ....

  function setEncoding($encoding)
  {
    $this->encoding=$encoding;
  }

  ....

  function CreateSubHTML(&$sub_html, $cellmargin=0)
  {
    // initialisation du sous objet
    $sub_html = new HTML2PDF(
     $this->sens,
     $this->format,
     $this->langue,
     array($this->defaultLeft,$this->defaultTop,$this->defaultRight,$this->defaultBottom),
     true
    );
    $sub_html->setEncoding($this->encoding);
    ....
  }

  ...

}


------------------
$html2pdf = new HTML2PDF($orient,$size,'fr', array(8, 8, 8, 8));
$html2pdf->pdf->SetDisplayMode('fullpage');
if($russian>0)
{
  $html2pdf->setEncoding('cp1251');
  $html2pdf->AddFont('VerdanaRU','','verdanaru.php');
  $html2pdf->AddFont('VerdanaRU','B','verdanaruB.php');
  $html2pdf->AddFont('VerdanaRU','I','verdanaruI.php');
  $html2pdf->AddFont('VerdanaRU','BI','verdanaruBI.php');
  $html = '<style type="text/css"> * { font-family: VerdanaRU; } </style>'.$html;
}
$html2pdf->WriteHTML($html);
$html2pdf->Output('doc.pdf'); 
Ancien pseudo : lolo

17

ben si, parce que le code HTML peut contenir plusieures fontes, mais pour forcer FPDF a utiliser la fonte Russe, il faut bien l'ecrire quelque part pour supplenter les terems de l'HTML...

tout ca pour dire que ce serait bien de passer a UTF 8 ;-)

18

he, pkoi le bug de l'encoding est pas corrige dans 3.25 ?

19

sisi, il est corrigé, la méthode setencoding a été rajouté

pour ce qui est du forcage de la fonte, ce n'etait pas une solution propre. ce n'est pas à html2pdf de forcer une fonte pour l'html, mais à l'HTML de prévoir une fonte logique avec l'encodage...
Ancien pseudo : lolo

20

ok

21

hello spidu,

to use this with utf8 do i need to do something alse then:
$html2pdf->setEncoding ( 'utf-8');

There is much requests for this.
Developer of Fusion Ticket. I ticket sale webshop using Html2pdf to generate the pdf files

22

html2pdf use FPDF, and FPDF does not work with UTF8, sorry !
Ancien pseudo : lolo

23

Thanks spidu for your replay.

A couple of people using FusionTicket asked us what they needed to do to show none ascii characters,
Can you give some suggestion on our forum or here what they can do best.

thanks.
Developer of Fusion Ticket. I ticket sale webshop using Html2pdf to generate the pdf files

24

Ancien pseudo : lolo