2010-02-03 4 views
0

Je dois coder un script PHP qui me permettrait de générer un fichier pdf qui affiche une carte d'identité de membre (quelque chose comme une carte de crédit utilisée pour s'identifier) ​​à une certaine résolution. Permettez-moi d'expliquer:
J'ai le plan de base de la carte au format de fichier png. Le script doit être associé au nom et à l'anniversaire d'un membre ainsi qu'à une publication en série. Jusqu'à présent, pas de problème - il y a beaucoup de bonnes bibliothèques PHP qui fonctionnent.Création dynamique d'une carte d'identité de membre en pdf en utilisant PHP?

Mon problème est de faire en sorte que le pdf résultant (l'image générée de la carte, pour être précis) rencontre une certaine résolution (de préférence 300dpi), de sorte que l'impression serait correcte.

Des idées?

EDIT
Je l'ai résolu en utilisant la bibliothèque TCPDF qui vous permet de l'échelle des images à une certaine résolution.
obtenir ici: http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf

EDIT @Don

require_once(dirname(__FILE__).'/tcpdf/config/lang/eng.php'); 
require_once(dirname(__FILE__).'/tcpdf/tcpdf.php'); 

// create new PDF document 
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, 
       true, 'UTF-8', false); 

// set document information 
$pdf->SetCreator('SO-youth'); 
// remove default header/footer 
$pdf->setPrintHeader(false); 
$pdf->setPrintFooter(false); 

// set default monospaced font 
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); 

//set margins 
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); 

//set auto page breaks 
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); 

//set image scale factor 
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); 

// set font 
$pdf->SetFont('courier', '', 10); 

// add a page 
$pdf->AddPage(); 

// set JPEG quality 
$pdf->setJPEGQuality(100); 

$cred = <<<EOT 
    <p> 
     <b>{$userdata->first_name} {$userdata->last_name}</b><br/> 
     <span style="font-size: 80%;">{$userdata->geburtstag}</span> 
    </p> 
EOT; 
$id = <<<EOT 
    <span style="font-size: 60%;">{$userdata->club_id}</span> 
EOT; 

$pdf->Image(dirname(__FILE__).'/img/clubcard.jpg', 
      10, 10, 85.6, 53.98, null, null, null, false, 300); 

$pdf->writeHTMLCell(60, 15, 50.5, 20.5, $cred); 
$pdf->writeHTMLCell(50, 20, 77, 50.5, $id); 

//Close and output PDF document 
$pdf->Output($userdata->filename, 'F'); 

Répondre

1

J'utilise Imagemagick à cet effet, ainsi que Imagick pour pouvoir y accéder directement à partir de php.

Vous serez alors en mesure de prendre l'image originale, ajouter du texte à, et la sortie (ou magasin) en format pdf, avec quelque chose comme ceci:

$image = new Imagick($filename); 
    $draw = new ImagickDraw(); 
    $draw->setFont($font); 
    $draw->setFontSize($fontSize); 
    $image->annotateImage($draw, $xpos, $ypos, $rotation, $text); 
    // Changes the dpi 
    $image->setImageResolution(200,200); 

Je ne peux pas trouver le bon code pour la sortie/stockage en pdf rapidement, mais cela devrait être documenté quelque part sur le site Imagemagick.

+0

Cela ferait certainement l'affaire, à moins que la lib ne soit pas et ne puisse pas être installée (hoster low cost: /). – aefxx