Impression PDF [Résolu]

kiki2sirom 153 Messages postés mardi 17 août 2004Date d'inscription 23 décembre 2010 Dernière intervention - 17 janv. 2008 à 10:49 - 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 

Votre réponse

6 réponses

malik7934 1162 Messages postés mardi 9 septembre 2003Date d'inscription 15 août 2009 Dernière intervention - 17 janv. 2008 à 12:35
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
kiki2sirom 153 Messages postés mardi 17 août 2004Date d'inscription 23 décembre 2010 Dernière intervention - 18 janv. 2008 à 12:12
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
malik7934 1162 Messages postés mardi 9 septembre 2003Date d'inscription 15 août 2009 Dernière intervention - 18 janv. 2008 à 13:02
0
Merci
donne moi ton mail en MP et je t'envoie le toute...

*****
Commenter la réponse de malik7934
fouadabrouk 1 Messages postés vendredi 21 novembre 2008Date d'inscription 20 avril 2009 Dernière intervention - 20 avril 2009 à 14:27
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
ecrins38000 - 27 juin 2015 à 15:22
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
malik7934 1162 Messages postés mardi 9 septembre 2003Date d'inscription 15 août 2009 Dernière intervention - 18 janv. 2008 à 13:02
-2
Merci
donne moi ton mail en MP et je t'envoie le toute...

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.