IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

knp_snappy.pdf et proportions


Sujet :

Symfony PHP

  1. #1
    Membre confirmé Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Points : 531
    Points
    531
    Par défaut knp_snappy.pdf et proportions
    Bonjour,

    J'utilise le bundle knp_snappy.pdf pour générer des PDF sous Symfony2.

    Pour faciliter la mise en page, j'utilise l'unité cm.
    Le PDF mesure bien 21 x 29.7cm.
    Mais les marges et les largeurs sont toujours environ 1,4 fois plus petites sur le PDF que dans les valeurs CSS définies.

    Je vous remercie pour votre aide,
    Gilles.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    Sur une feuille A4, 100% de la page n'est pas imprimable.
    Peut-être que PDF essaye de redimensionner ton "image" pour qu'elle soit aux normes?
    essaye de lui passer une image plus petite pour voir si la modification disparait

  3. #3
    Membre confirmé Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Points : 531
    Points
    531
    Par défaut
    Bonjour et merci pour ta réponse,

    Le problème ne vient pas de là.
    Voila un peu de code qui pourrait aider à résoudre ce problème :

    Le contrôleur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
        public function devisPDFAction($idDevis)
        {    
        	$oDevis = $this->getDoctrine()->getRepository( 'ExpCommercialBundle:Devis' )->findOneById( $idDevis );
        	if ( !$oDevis ) throw $this->createNotFoundException( "Le devis ".$idDevis." n'existe pas" );
     
        	$html = $this->renderView('ExpCommercialBundle:Facturation:devis.pdf.twig');
        	$filename = "Devis_".date('dmy').'pdf';
     
        	return new Response(
        			$this->get('knp_snappy.pdf')->getOutputFromHtml($html),
        			200,
        			array(
        					'Content-Type'          => 'application/pdf',
        					'Content-Disposition'   => 'attachment; filename="'.$filename.'"'
        			)
        	);
        }
    le template twig:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    <html>
    	<head>
    		<meta charset='UTF-8' />
     
    		<style>
    			#balise {
    				width: 3cm; 
    				margin-left: 17cm;
    				background-color: tomato;
    				height: 1cm;
    			}
    		</style>
    	</head>
     
    	<body>
    		<div id="balise"></div>
    	</body>
    </html>
    et voila une capture d'écran de ce que ca donne :

    Contrairement aux indications css, le cadre est à 12cm du bord et mesure moins de 2cm.

    Auriez vous une autre idée ?
    Merci,

    Gilles

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    Le problème ne vient pas de là.
    Bon bah si tu le dis...
    peux tu poster le résultat avec ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <style>
    #balise {
    	width: 100%; 
    	margin: 0;
    	background-color: tomato;
    	height: 1cm;
    }
    </style>

  5. #5
    Membre confirmé Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Points : 531
    Points
    531
    Par défaut
    Voila le résultat :


    Gilles

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    Sur une feuille A4, 100% de la page n'est pas imprimable
    Je vois pas ce que je peux dire de plus ^^'
    Si ce n'est qu'utiliser du css en cm ce n'est pas recommandé: utilise des % et prend en compte les marges naturelles du pdf

  7. #7
    Membre confirmé Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Points : 531
    Points
    531
    Par défaut
    Je comprend qu'il y ai des marges sur la page. C'est normal.

    Ce que je ne comprend pas, c'est que lorsque je mets le code css
    margin-left: 17cm, je m'attend à ce que la div "balise" soit décalée de 17cm du bord gauche de la page (+ la marge de la page).

    Mais dans mon cas, elle n'est décalée que de 12cm.



    Quant à l'utlisation des cm, c'est aussi une unité recommandée pour l'impression
    http://www.w3.org/Style/Examples/007/units.fr.html

    Aurais-tu une autre idée ?
    Sinon, je vais devoir tatonner jusqu'à avoir les blocs correctement positionés :-(

    Merci,
    Gilles

  8. #8
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    Au temps pour moi.
    Ducoup est ce que ceci peut t'aider si tu rajoute ca avant tes styles de #balise?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    body {
        margin:     0;
        padding:    0;
        width:      21cm;
        height:     29.7cm;
    }
    Après j'ai pas d'autres idées si ca échoue

  9. #9
    Membre confirmé Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Points : 531
    Points
    531
    Par défaut
    Malheureusement, le problème est le même.
    J'ai ajouté une bordure sur le body, pour voir ce que ça donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    	body {
    		margin: 0;
    		padding: 0;
    		width: 21cm;
    		height: 29.7cm;
    		border: 1px solid orange;
    	}
     
    	#balise {
    		width: 3cm ;
    		margin-left: 17cm;
    		background-color: tomato;
    		height: 1cm;
    	}


    C'est peut-être le format "standard" de knp_snappy qui ne fait pas 21cm.
    Peut-on "forcer" le format A4 ?

    Gilles

  10. #10
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    aucune idée j'ai jamais utilisé ce plugin (je crois que ma boite utilise htmltopdf)

  11. #11
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour,

    Il faut consulter la doc de wkhtml2pdf pour voir les options disponibles:
    http://madalgo.au.dk/~jakobt/wkhtmlt...0.9.9-doc.html section General Options.
    Les marges sont définies à 10 mm par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pdf=$this->get('knp_snappy.pdf')->getOutputFromHtml($html,array('margin-left'=>0);

  12. #12
    Membre confirmé Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Points : 531
    Points
    531
    Par défaut
    Bonjour,

    Merci pour l'info.
    Malheureusement, le problème n'est pas un problème de marge sur la page.

    Le post d'hier (3 décembre) à 16h35 décrit mieux mon problème.
    Ce que je ne comprend pas, c'est que lorsque je mets le code css
    margin-left: 17cm, je m'attend à ce que la div "balise" soit décalée de 17cm du bord gauche de la page (+ la marge de la page).

    Mais dans mon cas, elle n'est décalée que de 12cm.
    Auriez-vous une idée pour résoudre (ou expliquer) ce problème.
    Merci,

    Gilles

  13. #13
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Dans le lien fourni plus haut il y a également des options page-size (ex A4) , page-width,...
    D'autre part les lecteurs de pdf ont généralement une option "propriété" afin de connaitre la taille du document.
    Je m'assurerai donc d'abord que le document généré est bien en A4

  14. #14
    Membre confirmé Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Points : 531
    Points
    531
    Par défaut
    Bonjour,

    J'ai essayé avec les options page-size et page-width, sans succès :-(
    Le document final mesure bien 210mm x 297mm.
    j'ai affiché la règle, en haut de la capture d'écran du post précédent.

    Gilles.

Discussions similaires

  1. XML to PDF
    Par joebarteam88 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 16/01/2003, 17h30
  2. [XMLRAD] Fichier PDF
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 2
    Dernier message: 09/01/2003, 10h19
  3. [] Convertir un fichier word en pdf
    Par SpaceFrog dans le forum VBA Word
    Réponses: 7
    Dernier message: 06/12/2002, 15h27
  4. Affichage de documents PDF
    Par Dajon dans le forum C++Builder
    Réponses: 5
    Dernier message: 10/10/2002, 11h36
  5. [CR] exporter en PDF
    Par Nathy dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 16/05/2002, 09h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo