Impression PDF [Résolu]

Messages postés
153
Date d'inscription
mardi 17 août 2004
Statut
Membre
Dernière intervention
23 décembre 2010
- - Dernière réponse :  ecrins38000 - 27 juin 2015 à 15:22
salut à la communauté

j'ai une interrogation :

    * quelle serait la meilleure solution pour pouvoir, en cliquant sur un bouton, imprimer à la suite 1 ou plusieurs PDF se trouvant déjà sur le serveur ?

est-il posible de le faire sans ouvrir les PDF ?
sinon est-ce plutôt possible en les ouvrant en background ?
est-ce possible en lançant l'impression sans ouvrir la fenêtre d'impression classique ?
une classe d'impression existerait-elle pour ce faire ?
...

en gros je cherche une solution pour un client où celui-ci clique sur un icône qui va imprimer un ou plusieurs fichiers PDF qui se trouve sous htdocs..../pdf/... : solution idéale, donc une solution la plus transparente possible pour le client

Merci par avance pour votre aide

kiki
Afficher la suite 

6 réponses

Messages postés
1162
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
1
0
Merci
Tu peux le faire avec FPDF!

Moi j'ai un exemple où le fichier au final se lance tout seul à l'imprimante :-) Je sais plus d'où je le sors, surement du site de fpdf.

Je te le file tel quel, je ne fais pas de support.

<?php

define('FPDF_FONTPATH','font/');
require('fpdf.php');
require('fpdf_js.php');

class PDF extends PDF_Javascript
{
    function Pointille($x1=0,$y1=0,$x2=210,$y2=297,$epaisseur=0.2,$nbPointilles=50)
    {
        $this->SetLineWidth($epaisseur);
        $longueur=abs($x1-$x2);
        $hauteur=abs($y1-$y2);
        if($longueur>$hauteur) {
            $Pointilles=($longueur/$nbPointilles)/2; // taille des pointilles
        }
        else {
            $Pointilles=($hauteur/$nbPointilles)/2;
        }
        for($i=$x1;$i<=$x2;$i+=$Pointilles+$Pointilles) {
            for($j=$i;$j<=($i+$Pointilles);$j++) {
                if($j<=($x2-1)) {
                    $this->Line($j,$y1,$j+1,$y1); // on trace le pointillé du haut, point par point
                    $this->Line($j,$y2,$j+1,$y2); // on trace le pointillé du bas, point par point
                }
            }
        }
        for($i=$y1;$i<=$y2;$i+=$Pointilles+$Pointilles) {
            for($j=$i;$j<=($i+$Pointilles);$j++) {
                if($j<=($y2-1)) {
                    $this->Line($x1,$j,$x1,$j+1); // on trace le pointillé du haut, point par point
                    $this->Line($x2,$j,$x2,$j+1); // on trace le pointillé du bas, point par point
                }
            }
        }
    }

function AutoPrint($dialog=false)
{
    //Lance la boîte d'impression ou imprime immediatement sur l'imprimante par défaut
    $param=($dialog ? 'true' : 'false');
    $script="print($param);";
    $this->IncludeJS($script);
}

function AutoPrintToPrinter($server, $printer, $dialog=false)
{
    //Imprime sur une imprimante partagée (requiert Acrobat 6 ou supérieur)    $script "var pp getPrintParams();";
    if($dialog)        $script ."pp.interactive pp.constants.interactionLevel.full;";
    else        $script ."pp.interactive pp.constants.interactionLevel.automatic;";    $script ."pp.printerName '\\\\\\\".$server."\\\".$printer."';";
    $script .= "print(pp);";
    $this->IncludeJS($script);
}

}

function generatePDF(){
    $pdf=new PDF();
    $pdf->Open();
    $pdf->AddPage();
    $pdf->SetDrawColor(200);
    $pdf->Pointille(10,10,200,100);
    $pdf->SetFont('Arial','B',30);
    $pdf->SetXY(40,10);
    $pdf->Cell(125,30,"test",0,0,'C',0);
    $pdf->AutoPrint(false);
    $pdf->Output('test2.pdf');
}

function showGeneratedPDF($name){
    $pdf->Output($name);
}

echo '<form name="generate" method="POST" action="">';
echo '[JavaScript:document.generate.submit(); generate and print]';
echo '</form>';

$gen = 0;
if (isset($_POST)){
        if (isset($_POST['gen'])){
                $gen = 1;
        }
}

$show = 0;
if (isset($_POST)){
        if (isset($_POST['show'])){
                $show = 1;
        }
}

if ($gen == 1){
        generatePDF();

    if ($show==1) showGeneratedPDF('test2.pdf');

    echo '<form name="generatedPDF" method="POST" action="">';
    echo '[JavaScript:document.generatedPDF.submit(); show]';
    echo '</form>';

        echo '&nbsp;[test2.pdf Imprimer]';
}
?>

/*************************** LE FICHIER JS  ***************************/
<?php

class PDF_Javascript extends FPDF {

    var $javascript;
    var $n_js;

    function IncludeJS($script) {
        $this->javascript=$script;
    }

    function _putjavascript() {
        $this->_newobj();
        $this->n_js=$this->n;
        $this->_out('<<');
        $this->_out('/Names [(EmbeddedJS) '.($this->n+1).' 0 R ]');
        $this->_out('>>');
        $this->_out('endobj');
        $this->_newobj();
        $this->_out('<<');
        $this->_out('/S /JavaScript');
        $this->_out('/JS '.$this->_textstring($this->javascript));
        $this->_out('>>');
        $this->_out('endobj');
    }

    function _putresources() {
        parent::_putresources();
        if (!empty($this->javascript)) {
            $this->_putjavascript();
        }
    }

    function _putcatalog() {
        parent::_putcatalog();
        if (isset($this->javascript)) {
            $this->_out('/Names <</JavaScript '.($this->n_js).' 0 R>>');
        }
    }
}
?>
 

*****
Commenter la réponse de malik7934
Messages postés
153
Date d'inscription
mardi 17 août 2004
Statut
Membre
Dernière intervention
23 décembre 2010
0
Merci
salut merci de ton aide,

j'ai essayé ton script mais quand je clique sur "Imprimer" : il m'ouvre le PDF et puis c'est tout.

Ton exemple fonctionne avec toutes les versions de PDF ?

kiki
Commenter la réponse de kiki2sirom
Messages postés
1162
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
1
0
Merci
donne moi ton mail en MP et je t'envoie le toute...

*****
Commenter la réponse de malik7934
Messages postés
1
Date d'inscription
vendredi 21 novembre 2008
Statut
Membre
Dernière intervention
20 avril 2009
0
Merci
Bonjour tout le monde,

J'ai exactement le même problème. Serait-il possible de m'éclairer sur ce point ?

Merci d'avance...
Commenter la réponse de fouadabrouk
0
Merci
hi, it work well with this code on my server web

this program automaticaly print the pdf file in a good printer and close the windows printer


// declare name of file pdf

$inom= $_SESSION["IPPCODE"]."-".$_SESSION["NDOSCODE"]."-".date("is");

// search poste name
$addrip=$_SERVER['REMOTE_ADDR'];
$host=gethostbyaddr($addrip);

// my printer

$printer = "Smart Label Printer 200 & 420";

//call function pinter

$pdf->AutoPrintToPrinter($host,$printer,false);

// start print
//$pdf->Output();
$pdf->Output($inom."no.pdf","F");


echo '
<iframe src="'.$inom.'no.pdf" width="900" height="500">
[Your browser does <em>not</em> support
iframe
,
or has been configured not to display inline frames.
You can access <a href="./'.$inom.'no.pdf">the document</a>
via a link though.]</iframe>';

//echo "<script language='javascript'>self.close()</script>" ;
$maPAGE="./affichepdf.php?nom=".$inom."";
echo "<meta http-equiv='Refresh' content='5;URL=$maPAGE'>";


view to affichepdf.php

<?php

$lenom=$_GET["nom"];

//echo "<script language='javascript'>fermer()</script>" ;
unlink ($lenom."no.pdf");

echo '<script language="JavaScript">
function fermer() {
opener=self;
self.close();
}
</script>';

echo "<script language='javascript'>self.location.href='./finir.php'</script>" ;

?>


view to finir.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>ferme</title>
<script language="JavaScript">

<script language="javascript">
window.ferme.close();
parent.close();

var obj_window = window.open('', '_self');
obj_window.opener = window;
obj_window.focus();
opener=self;
self.close();
</script>

</head>
<body onload="fermer()";>
<?php
// On écrase le tableau de session -->
//$_SESSION .= array();
// On détruit la session -->
//session_destroy();
$affichage = "
<script type='text/javascript'>
parent.close();
</script>
";
echo $affichage;
?>
</body>
</html>



view in function AutoPrintToPrinter

function AutoPrintToPrinter($server, $printer, $dialog=false)
{
//Imprime sur une imprimante partagée (requiert Acrobat 6 ou supérieur)
$script = "var pp = this.getPrintParams();";
if($dialog==true)
// dialog false
$script .= "pp.interactive = pp.constants.interactionLevel.full;";
else
// mode silent
$script .= "pp.interactive = pp.constants.interactionLevel.silent;";
// mode interactif
//$script .= "pp.interactive = pp.constants.interactionLevel.automatique;";
//$script .= "pp.printerName = '\\\\\\\\".$server."\\\\".$printer."';";
//$script .= "pp.printerName = 'PDFCreator';";
//$script .= "pp.printerName = 'Smart Label Printer 200 & 420';";
$script .= "pp.printerName = '".$printer."';";
//$script .= "print(pp);";
$script .= "this.print(pp);";
$this->IncludeJS($script);

}



bye
Commenter la réponse de ecrins38000
Messages postés
1162
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
1
-2
Merci
donne moi ton mail en MP et je t'envoie le toute...

*****
Commenter la réponse de malik7934