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=""><input type="hidden" name="gen" value="1">';
echo '<a href="JavaScript:document.generate.submit();">generate and print</a>';
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=""><input type="hidden" name="show" value="1">';
echo '<a href="JavaScript:document.generatedPDF.submit();">show</a>';
echo '</form>';
echo ' <a href="test2.pdf">Imprimer</a>';
}
?>
/*************************** 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>>');
}
}
}
?>