hrabosh/pdf-invoice

生成PDF发票的库

dev-master 2022-08-29 11:12 UTC

This package is auto-updated.

Last update: 2024-09-29 05:57:13 UTC


README

Tests StyleCI Packagist Stable Version Packagist downloads GPL Software License

这是对pdf-invoicr的精简分支。

变更

  • PHP 7.3 - 8.0 支持
  • PSR-4 兼容
  • 作为composer包提供
  • 依赖项通过composer安装

PHP 兼容性

简介

PHP Invoice是一个简单的面向对象的PHP类,只需几行代码即可生成美观的发票、报价单或订单。使用您自己的logo和主题颜色进行品牌化,添加无限数量的项目和总行数,并实现自动分页。您可以将PDF输出发送到用户的浏览器,保存在服务器上或强制下载文件。PHP Invoice完全可定制,可以集成到任何知名的内容管理系统。

多语言和货币

PHP Invoice内置了英文、荷兰语、法语、德语、西班牙语和意大利语的翻译(如果需要,您可以轻松添加自己的翻译),并且您可以设置每个文档所需的货币。

附加标题、段落和徽章

可以在文档底部添加额外的内容(标题和多行段落)。您可能将其用于付款或运输信息或任何其他所需的内容。

安装

composer require konekt/pdf-invoice

示例

该存储库的examples/文件夹中包含3个示例

  • simple.php
  • example1.php
  • example2.php
  • change_timezone.php

创建新发票

TODO:代码审查后,更新README文档中的新常量。

确保在使用类之前设置默认的php日期时区。

在这个简单的示例中,我们生成了一个包含自定义logo和主题颜色的发票。它将包含2个产品,底部有一个包含增值税和总价格的框。然后我们在输出前添加一个“已支付”徽章。

use Konekt\PdfInvoice\InvoicePrinter;

  $invoice = new InvoicePrinter();
  
  /* Header settings */
  $invoice->setLogo("images/sample1.jpg");   //logo image path
  $invoice->setColor("#007fff");      // pdf color scheme
  $invoice->setType("Sale Invoice");    // Invoice Type
  $invoice->setReference("INV-55033645");   // Reference
  $invoice->setDate(date('M dS ,Y',time()));   //Billing Date
  $invoice->setTime(date('h:i:s A',time()));   //Billing Time
  $invoice->setDue(date('M dS ,Y',strtotime('+3 months')));    // Due Date
  $invoice->setFrom(array("Seller Name","Sample Company Name","128 AA Juanita Ave","Glendora , CA 91740"));
  $invoice->setTo(array("Purchaser Name","Sample Company Name","128 AA Juanita Ave","Glendora , CA 91740"));
  
  $invoice->addItem("AMD Athlon X2DC-7450","2.4GHz/1GB/160GB/SMP-DVD/VB",6,0,580,0,3480);
  $invoice->addItem("PDC-E5300","2.6GHz/1GB/320GB/SMP-DVD/FDD/VB",4,0,645,0,2580);
  $invoice->addItem('LG 18.5" WLCD',"",10,0,230,0,2300);
  $invoice->addItem("HP LaserJet 5200","",1,0,1100,0,1100);
  
  $invoice->addTotal("Total",9460);
  $invoice->addTotal("VAT 21%",1986.6);
  $invoice->addTotal("Total due",11446.6,true);
  
  $invoice->addBadge("Payment Paid");
  
  $invoice->addTitle("Important Notice");
  
  $invoice->addParagraph("No item will be replaced or refunded if you don't have the invoice with you.");
  
  $invoice->setFooternote("My Company Name Here");
  
  $invoice->render('example1.pdf','I'); 
  /* I => Display on browser, D => Force Download, F => local path save, S => return document as string */

文档

创建实例

use Konekt\PdfInvoice\InvoicePrinter;

// Default Param: Size: A4, Currency: $, Language: en
$invoice = new InvoicePrinter($size, $currency, $language); 

数字格式化

您想如何显示您的数字?

$invoice->setNumberFormat($decimalpoint, $seperator, $alignment, $space, $negativeParenthesis);

颜色

设置一个自定义颜色以个性化您的发票。

// Hexadecimal color code
$invoice->setColor($color);

添加logo

$invoice->setLogo($image, $maxwidth, $maxheight);

文档标题

// A string with the document title, will be displayed
// in the right top corner of the document (e.g. 'Invoice' or 'Quote')
$invoice->setType($title);

发票编号

// Document reference number that will be displayed in
// the right top corner of the document (e.g. 'INV29782')
$invoice->setReference($number);

日期

//A string with the document's date
$invoice->setDate($date);

到期日期

// A string with the document's due date
$invoice->setDue($duedate);

发行者信息

设置您的公司详细信息。

// An array with your company details. The first value of
// the array will be bold on the document so it's suggested
// to use your company's name. You can add as
// many lines as you need.
/** Example: */
$invoice->setFrom([
    'My Company',
    'Address line 1',
    'Address line 2',
    'City and zip',
    'Country',
    'VAT number'    
]);

客户信息

// An array with your clients' details. The first value of the
// array will be bold on the document so we suggest you to use
// the company's name. You can add as many lines as you need.
/** Example */
$invoice->setTo([
   'My Client',
   'Address line 1',
   'Address line 2',
   'City and zip',
   'Country',
   'VAT number'    
]);

翻转

切换公司和客户信息的水平位置。默认情况下,您的公司详细信息在左侧。

$invoice->flipflop();

发行者和客户标题

隐藏发行者和客户标题行

$invoice->hideToFromHeaders();

添加项目

在公司和客户信息下方添加新的产品或服务行到您的文档中。PHP Invoice具有自动分页功能,因此没有任何限制。

$invoice->addItem(name, description, quantity, vat, price, discount, total);
  • name(字符串)
    一个包含产品或服务名称的字符串。
  • description(字符串|false)
    一个包含描述的字符串,支持多行。使用<br>\n添加换行符。
  • quantity(十进制|false)
    该行的数量整数。
  • vat(字符串|十进制|false)
    传递一个字符串(例如“21%”,或您可能喜欢的任何其他文本)或一个十进制数,如果您想显示一个金额(例如124.30)。数值将自动格式化为“货币”。
  • price(十进制|false)
    单位价格的小数。
  • discount(字符串|十进制|false)
    传递一个字符串(例如“10%”,或您可能喜欢的任何其他文本)或一个十进制数,如果您想显示一个金额(例如50.00)注意:最终输出将不会显示折扣列,除非任何产品未设置折扣。
  • total(十进制|false)
    产品或服务的总价格的小数。

字段 descriptionquantityvatpricediscounttotal 都是可选的。要禁用发票行的任何一项,请传递相应的参数为 false

项目行描述字体大小

更改产品描述的字体大小。默认为7

$invoice->setFontSizeProductDescription(9);

添加总计

在产品和服务下方添加一行进行计算和总计。您可以添加无限行。

$invoice->addTotal(name,value,background);
  • name {string} 总字段显示名称的字符串。
  • value {decimal} 值的十进制数。
  • background {boolean} 可选。设置为 true 将将主题颜色设置为行的背景颜色。

添加徽章

在产品和服务下方添加徽章到您的发票。例如,您可以使用此功能显示发票已付款。

$invoice->addBadge($badge);

badge {string} 徽章文本的字符串。

您可以将徽章颜色设置为第二个参数

$invoice->addBadge('Paid', '#00ff00');
// Short hex variant is also supported
$invoice->addBadge('Payment pending', '#f00');

CSS颜色名称('red'、'cyan'、'fuchsia'等)不支持

添加标题

您可以在文档底部添加标题和段落来显示信息,如付款详情或运输信息。

$invoice->addTitle($title);

title {string} 要在徽章中显示的标题的字符串。

添加段落

您可以在文档底部添加标题和段落来显示信息,如付款详情或运输信息。

$invoice->addParagraph($paragraph);

段落 {string} 支持多行的段落文本的字符串。使用 <br>\n 添加换行符。

动态更改语言术语

您可以使用此方法更改语言术语。这将覆盖语言文件中的术语。

$invoice->changeLanguageTerm($term, $new);
$invoice->changeLanguageTerm('date', 'Confirmation Date');

页脚

您希望在文档底部左角显示的简短文本。

$invoice->setFooternote($note);

note {string} 要在页脚中显示的信息的字符串。

渲染发票

$invoice->render($name, $output);
  • name {string} 您发票的名称的字符串。例如:'invoice.pdf'
  • output {string} 选择您希望如何将发票交付给用户。以下选项可用
    • I(将文件作为内联文件发送到浏览器)
    • D(发送到浏览器并强制使用名称参数提供的名称下载文件)
    • F(保存到本地文件。请确保在名称参数中设置路径)
    • S(将文档作为字符串返回)

致谢