Привет всем кто знает, как я могу создать красиво отформатированный PDF-счет через PHP?
В идеале я ищу что-то с заголовком, а затем перечисляемый список продуктов с какой-то таблицей. После быстрого Google мне было бы комфортно создавать PDF-файл, но попробовать и стилизовать его было бы совсем другим.
благодаря
Я использую 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'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
Полный код довольно откровенно слишком длинный, чтобы вставить здесь, но вы должны получить эту идею, и вы получите довольно точный контроль макета.
Я бы рекомендовал создать представление html / css того, что вы хотите PDF, и использовать его для создания PDF-файла. Есть десятки приложений для обработки преобразования, и есть хорошая тема с множеством ответов здесь: Преобразование HTML + CSS в PDF с PHP?
Вы можете посмотреть html2Pdf. Это php-класс, основанный на FPDF, и позволяет создавать PDF-файл из HTML. Так что просто отформатируйте текст с помощью html, а затем создайте его pdf. Он очень гибкий и обеспечивает контроль над жиром.
Ссылка на SourceForge
Генерация PDF имеет тенденцию быть сложной. Пока счет-фактура относительно прост, я бы рекомендовал создать файл образа шаблона и использовать imagettftext
для печати строк поверх него (или любой другой библиотеки).
Для преобразования файла изображения в PDF можно использовать набор инструментов imagemagick (до тех пор, пока он доступен на сервере):
exec('convert -units \'PixelsPerInch\' -density 150 '.$filename.'.png '.$filename.'.pdf');
Для меня весь подход работал гладко.
Ознакомьтесь с библиотекой php-pdf-invoice
от композитора. Библиотека уже предназначена для создания счета-фактуры, поэтому его легко и быстро интегрировать!
composer require quickshiftin/php-pdf-invoice
Вы можете создавать PDF-файлы, которые выглядят так
В README есть пример использования. По сути, вы реализуете два интерфейса: один для заказов, другой для элементов заказа. Вы можете настроить шрифты и цвета по своему вкусу.