Impression PDF [Résolu]

Signaler
Messages postés
153
Date d'inscription
mardi 17 août 2004
Statut
Membre
Dernière intervention
23 décembre 2010
-
 ecrins38000 -
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

6 réponses

Messages postés
1162
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
6
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>>');
        }
    }
}
?>
 

*****
Messages postés
153
Date d'inscription
mardi 17 août 2004
Statut
Membre
Dernière intervention
23 décembre 2010

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
Messages postés
1162
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
6
donne moi ton mail en MP et je t'envoie le toute...

*****
Messages postés
1
Date d'inscription
vendredi 21 novembre 2008
Statut
Membre
Dernière intervention
20 avril 2009

Bonjour tout le monde,

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

Merci d'avance...

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
Messages postés
1162
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
6
donne moi ton mail en MP et je t'envoie le toute...

*****