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

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

26 голосов
/ 06 мая 2011

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

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

Спасибо

Ответы [ 6 ]

25 голосов
/ 06 мая 2011

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

16 голосов
/ 06 мая 2011

Я использую 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

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

1 голос
/ 29 ноября 2013

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

SourceForge Link

0 голосов
/ 19 ноября 2018

Даже если вы можете создавать PDF-документы программным способом, мы обнаружили, что лучше всего просто сгенерировать HTML-страницу PDF-документа и использовать какой-либо инструмент / сервис для преобразования HTML в PDF.

Если вы ищете приложение, которое вы можете разместить, вы можете проверить это:

  • wkhtmltopdf - использует webkit для рендеринга html в pdf. работает нормально с некоторыми оговорками.
  • PhantomJS - ПРОДОЛЖЕНИЕ , я бы не советовал его использовать.
  • Headless Chrome - Лучше всего, но само по себе это не решение. Вам нужен клиентский модуль в соответствии с вашей языковой средой программирования.

Если вы не хотите обращаться с утилитой самостоятельно, существует множество бесплатных / платных онлайн-сервисов, некоторые из которых перечислены ниже:

0 голосов
/ 18 августа 2017

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

composer require quickshiftin/php-pdf-invoice

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

Here's a sample invoice

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

0 голосов
/ 06 ноября 2016

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...