2011-05-06 30 views
21

Hola, ¿alguien sabe cómo puedo crear una factura en PDF con buen formato a través de PHP?PHP crear factura en PDF

Idealmente estoy buscando algo con un encabezado y luego una lista detallada de los productos con algún tipo de tabla alrededor. Después de un Google rápido, me sentiría cómodo con la generación de un PDF, pero tratar de darle un estilo agradable sería otra cosa.

Gracias

+1

¿Has encontrado FPDF? Lo analicé antes ... parecía mucho trabajo, pero prometiendo –

+1

Sí, echándole un vistazo ahora, muy buen tutorial aquí: http://www.web-development-blog.com/archives/create-pdf- documents-online-with-tcpdf/ – Martin

+0

Sugiero mirar el realreports.com, ellos una API y un editor de documentos basado en el navegador para crear diferentes plantillas. Encabeza, cobran por su servicio. – Tanel

Respuesta

16

Uso TCPDF (vea http://www.tcpdf.org/) para esto: es bastante capaz y no demasiado doloroso para obtener la configuración. Diré que dependiendo de su fuente de datos puede tener algunos problemas. En mi caso mis datos se obtiene de una interfaz SOAP a mi sistema de contabilidad y el uso CodeIgniter para mi aplicación, y puede hacer esto:

$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 

El código completo es francamente demasiado largo para insertar aquí, pero usted debe entérate de la idea y obtienes un control de diseño bastante preciso.

+1

Si ya está usando phpExcel, tiene la biblioteca integrada (para que pueda llamar a la clase) – rosh3000

23

Yo recomendaría la creación de una representación HTML/CSS de lo que desea un PDF y usuario de que para generar el PDF. Hay docenas de aplicaciones para manejar la conversión, y hay un buen hilo con muchas respuestas aquí: Convert HTML + CSS to PDF with PHP?

+1

Gracias por su respuesta +1. Esto suena como una buena solución y ayudará a las personas que lo vean en el futuro, sin embargo, para mi situación, necesito generar varias facturas mensualmente usando un cron. Es por eso que no he elegido tu respuesta como correcta. – Martin

+0

He hecho un poco de generación de PDF antes, fue realmente doloroso. Mucho más fácil es hacer tu diseño en HTML, que ya conoces y conviertes, como dijo Timothy. La única razón por la que puedo pensar en generarlos manualmente es si necesita control sobre los saltos de página. – YeB

0

Es posible que desee ver html2Pdf. Es una clase php basada en FPDF y te permite crear archivos PDF desde HTML. Así que simplemente formatee su texto usando html y luego cree su pdf. Es muy flexible y le da un gran control.

SourceForge Link

0

generación de PDF tiende a ser complicado. Siempre que la factura sea relativamente simple, recomendaría crear un archivo de imagen de plantilla y usar imagettftext para imprimir cadenas sobre él (o cualquier otra biblioteca).

Para archivo de imagen para la conversión de PDF ImageMagick conjunto de herramientas se puede utilizar (siempre que esté disponible en el servidor):

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

Para mí todo el enfoque funcionó sin problemas.

0

Verifica la biblioteca php-pdf-invoice del compositor. ¡La biblioteca ya está diseñada para generar una factura por lo que es fácil y rápida de integrar!

composer require quickshiftin/php-pdf-invoice

Puede generar archivos PDF que se ven así

Here's a sample invoice

Hay un ejemplo de uso en el README. Básicamente, implementa dos interfaces, una para pedidos y otra para artículos de pedido. También puede configurar fuentes y colores a su gusto.