Подтвердить что ты не робот

PHP создать PDF-счет

Привет всем знает, как я могу создать красиво отформатированный PDF-счет через PHP?

В идеале я искал что-то с заголовком, а затем перечислял список продуктов с какой-то таблицей. После быстрого Google мне было бы удобно создавать PDF файл, но попробовать и стилизовать его было бы совсем другим.

Спасибо

4b9b3361

Ответ 1

Я использую TCPDF (см. http://www.tcpdf.org/) для этого: его довольно способный и не слишком болезненный для установки. Я скажу, что в зависимости от вашего источника данных могут возникнуть некоторые проблемы. В моем случае мои данные поступают из интерфейса SOAP в мою учетную систему и используют CodeIgniter для моего приложения, и я могу это сделать:

$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 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

Полный код довольно откровенно слишком длинный, чтобы вставить сюда, но вы должны получить эту идею, и вы получите довольно точный макет.

Ответ 2

Я бы рекомендовал создать представление html/css того, что вы хотите PDF, и использовать его для создания PDF. Есть десятки приложений для обработки конверсий, и есть хорошая тема с большим количеством ответов здесь: Преобразование HTML + CSS в PDF с PHP?

Ответ 3

Вы можете посмотреть html2Pdf. Это php-класс, основанный на FPDF, и позволяет создавать PDF файл из HTML. Так что просто отформатируйте текст с помощью html, а затем создайте его pdf. Он очень гибкий и обеспечивает контроль над жиром.

SourceForge Link

Ответ 4

Генерация PDF имеет тенденцию быть сложной. Пока счет-фактура относительно прост, я рекомендовал бы создать файл образа шаблона и использовать imagettftext для печати строк поверх него (или любой другой библиотеки).

Для преобразования файла изображения в PDF можно использовать набор инструментов imagemagick (пока он доступен на сервере):

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

Для меня весь подход работал гладко.

Ответ 5

Ознакомьтесь с библиотекой php-pdf-invoice от композитора. Библиотека уже создана для создания счета-фактуры, поэтому его легко и быстро интегрировать!

composer require quickshiftin/php-pdf-invoice

Вы можете создавать файлы PDF, которые выглядят следующим образом:

Вот пример счета

В README есть пример использования. По сути, вы реализуете два интерфейса: один для заказов, другой для элементов заказа. Вы можете настроить шрифты и цвета по своему вкусу.