web-dev-qa-db-fra.com

PHP créer PDF facture d'achat

Bonjour tout le monde sait-il comment créer une facture PDF bien formatée via PHP?

Idéalement, je cherche quelque chose avec un en-tête et ensuite une liste détaillée des produits avec une sorte de table autour. Après un rapide Google, je serais à l'aise avec la génération d'un PDF, mais essayer de la styliser serait une autre chose.

Merci

25
Martin

J'utilise TCPDF (voir http://www.tcpdf.org/ ) pour cela: c'est assez capable et pas trop pénible pour obtenir une configuration. Je dirai que, selon votre source de données, vous pouvez avoir des problèmes. Dans mon cas, mes données proviennent d'une interface SOAP vers mon système de comptabilité et utilisent CodeIgniter pour mon application. Je peux le faire:

$address = $extraclient->get_company_address();

// generate the PDF invoice
$this->load->library('pdfinvoice');

// set document information
$this->pdfinvoice->SetSubject("Invoice " . $data_invoice['code_invoice']);

// add a page
$this->pdfinvoice->AddPage();
$this->pdfinvoice->StartPageOffset();

// write the client's details out
$width = $this->pdfinvoice->GetPageWidth()/2;
$margins = $this->pdfinvoice->getMargins();
$this->pdfinvoice->SetFont('times', 'b', $this->pdfinvoice->bigFont );
$this->_row($width, array("From:", "To:"));
$this->pdfinvoice->SetFont('times', 'i', $this->pdfinvoice->smallFont );
$this->_row($width, array("MY NAME", $customer['name_contact']));
$this->_row($width, array($address['phone'], $customer['name_customer']));
$this->_row($width, array($address['street'], $customer['address1_street']));
$this->_row($width, array($address['city']. ", ".$address['state']." ".$address['zipcode'],
                          $customer['address1_city']. ", ".$customer['address1_state']." ".$customer['address1_Zip

Le code complet est franchement trop long à insérer ici, mais vous devriez avoir l’idée, et vous obtenez un contrôle de mise en page assez précis.

16
Femi

Je recommanderais de créer une représentation HTML/CSS de ce que vous voulez un PDF et de l'utiliser pour générer le PDF. Il existe des dizaines d'applications pour gérer la conversion, et il existe un bon fil avec beaucoup de réponses ici: Convertir HTML + CSS en PDF avec PHP?

25

Vous voudrez peut-être regarder html2Pdf. C'est une classe php basée sur FPDF qui vous permet de créer un fichier PDF à partir de HTML. Il vous suffit donc de formater votre texte en utilisant HTML, puis de créer son pdf. C'est très flexible et donne un bon contrôle.

Lien SourceForge

1
Shoaib Shakeel

Même si vous pouvez générer des documents pdf par programme, nous avons découvert qu'il est préférable de générer une page HTML du document PDF et d'utiliser un outil/service pour convertir le code HTML en PDF. 

Si vous recherchez une application que vous pouvez héberger, vous pouvez vérifier:

  • wkhtmltopdf - utilise webkit pour convertir html en pdf. fonctionne bien avec quelques mises en garde.
  • PhantomJS - DISCONTINUED, je ne suggérerais pas de l'utiliser.
  • Headless Chrome - Mieux encore, ce n'est pas une solution en soi. Vous avez besoin d'un module client en fonction de votre environnement de langage de programmation.

Si vous ne souhaitez pas gérer l'utilitaire vous-même, il existe de nombreux services en ligne gratuits/payants, dont certains sont énumérés ci-dessous:

0
Ekin Koc

La génération de PDF a tendance à être délicate. Tant que la facture est relativement simple, je vous recommande de créer un fichier image modèle et d’utiliser imagettftext pour imprimer des chaînes par dessus (ou toute autre bibliothèque).

Pour les fichiers image en PDF conversion imagemagick tool suite peut être utilisé (tant qu'il est disponible sur le serveur):

exec('convert -units \'PixelsPerInch\' -density 150 '.$filename.'.png '.$filename.'.pdf');

Pour moi, toute l'approche a bien fonctionné.

0
meliniak

Extraire la bibliothèque php-pdf-invoice de composer. La bibliothèque est déjà conçue pour générer une facture, donc son intégration est simple et rapide!

composer require quickshiftin/php-pdf-invoice

Vous pouvez générer des fichiers PDF qui ressemblent à ceci

 Here's a sample invoice

Il y a un exemple d'utilisation sur le fichier README. Vous implémentez essentiellement deux interfaces, une pour les commandes, une autre pour les postes de commande. Vous pouvez également configurer les polices et les couleurs selon vos préférences.

0
quickshiftin