Bonjour à tous,
Je suis actuellement en train de bosser sur la génération de PDF avec PDFlib 8 (la version "demo"). J'ai installé la lib et commencé à faire mes générations de PDF et tout est presque bon.. tout sauf la rotation d'image et j'ai arpenté toute la toile à la recherche de LA solution que je n'ai hélas pas encore trouvé.
Pour situer le contexte voilà comment ça se passe : D'un côté j'ai un frontend (Flash) sur lequel on va disposer des objets (images, textes, etc...), pour chaque objet on mémorise les coordonnées par rapport au canvas du frontend et jusqu'à là tout est bon. Tout est stocké en base.
La génération de PDF se fait en ligne de commande via PHP-Cli (c'est une tâche symfony qui s'occupe de ça). Le rendu des images non tournées est impeccable, les textes aussi par contre, dés que je veux appliquer une rotation sur une image c'est le document entier qui tourne...
Ce que j'aimerais faire c'est pouvoir dire à PDFlib que je veux faire tourner l'image depuis son origine ($x + $width / 2) et ($y + $height /2) et pas faire tourne le document.
Alors dans un premier temps voilà ce que je fais :
Avant ça je récupère la rotation en degré dans la variable $rotation. J'ai bien consulté la doc et c'est effectivement une valeur en degré qu'il faut passer. On voit d'ailleurs que la rotation est bonne mais la position en $x et $y est complètement fausse, d'ailleurs suivant le taux de rotation l'image sort carrément du PDF (ce qui est normal puisque la rotation se fait depuis le document et pas depuis l'image).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 // Rotation de l'image if ((double)$rotation != (double)0.0) { $options .= ' position={center bottom} rotate='.$rotation.' fitmethod=entire'; $pdf->fit_image($imagePdf, $x1, $y1, $options); }
J'ai tenté d'appliquer une formule de rotation pour avoir de nouvelles coordonnées mais ça n'a pas été un succès :
Voilà en image ce que ça donne sans application de la formule de rotation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $rotationRadian = deg2rad($rotation); $x1 = cos($rotationRadian) * $x + sin($rotationRadian) * $y; $y1 = -sin($rotationRadian) * $x + cos($rotationRadian) * $y;
Uploaded with ImageShack.us
Avez vous déjà rencontré ce problème et si oui comment le résoudre ? C'est un calcul mathématique où l'angle de rotation est facteur car suivant sa valeurs les positions changent vraiment.
D'avance merci![]()
Partager