Difference between revisions of "PDF Invoice Customisation"

From WHMCS Documentation

(Changing/Translating Filename)
(Reducing the Filesize of PDFs)
Line 49: Line 49:
 
==Reducing the Filesize of PDFs==
 
==Reducing the Filesize of PDFs==
  
The bulk of the file size of the PDFs that are generated by WHMCS come from the embedding of the font files for the UTF-8 character set. Because the UTF-8 charset has a large range of characters it supports, this means it takes up much more space than say the iso-8859-1 charset which unlike UTF-8, only supports A-Z 0-9 and other standard characters.
+
The bulk of the file size for PDFs generated by WHMCS come from the embedded font files for UTF-8. Because the UTF-8 charset has a large range of supported characters, this means it takes up more space than say the iso-8859-1 charset. Unlike UTF-8, iso-8859-1, only supports A-Z 0-9 and other standard characters.
  
Therefore if you don't need all those special characters UTF-8 supports (ie. you don't have clients using those characters in their names/addresses) then you can reduce the filesize of PDF's quite considerably by changing the font. To do that, simply go to '''Setup > General Settings > Invoices > TCPDF Font''' and change the selection from "Freesans" to "Helvetica"
+
If no clients are using special characters in their names/addresses then UTF-8 is not required. It is then possible to reduce the filesize of PDF's by changing the font. To do that, go to '''Setup > General Settings > Invoices > TCPDF Font'''. Once there, change the selection from "Freesans" to "Helvetica".
  
 
==Additional Fonts==
 
==Additional Fonts==

Revision as of 09:20, 5 January 2016

There are 2 invoice templates. One is for the client area invoice (viewinvoice.tpl). The other is for the PDF version of an invoice (invoicepdf.tpl). The templates are found in the active WHMCS template folder.

The logo displayed on the PDF invoices is in the /assets/img/ folder. To change this logo, upload the required logo to the /assets/img/ folder. The name of the file should be "logo.jpg" or "logo.png".

The width of the logo image can be changed in the invoicepdf.tpl template file. On line 4, adjust the last number "75" before the closing bracket );. This variable defines the image width. A developer can then experiment increasing and decreasing it until happy.

Editing Text & Content

A developer can customise the PDF invoices. This includes adding or removing text, altering the layout or adding further images & formatting. Do this by editing the template file invoicepdf.tpl in the active template folder. The file contains all the code relating to the layout and display of the invoice in its PDF format. A basic working knowledge of PHP coding to understand and modify the file.

Displaying Custom Fields

It is possible to display Custom fields on printable and PDF invoices. Do this by ticking the Setup > Custom Client Fields > Show on Invoice option.

The following variables are available for use in the invoicepdf.tpl file. Obtain further data by running SQL queries from within the PHP template.

  • $datecreated - Creation Date of the invoice.
  • $duedate - Due date of the invoice.
  • $datepaid - Shows paid date/time if invoice status is Paid.
  • $userid - Client ID Number.
  • $clientsdetails["firstname"] - Client Info First Name.
  • $clientsdetails["lastname"] - Client Info Last Name.
  • $clientsdetails["companyname"] - Client Info Company Name.
  • $clientsdetails["fieldname"] - etc...
  • $clientsdetails["customfields1"] - Client Info Custom Field #1
  • $subtotal
  • $tax
  • $taxrate
  • $credit
  • $total
  • $status - Paid, Unpaid or Cancelled
  • $paymentmethod
  • $notes
  • $companyname - The Company Name
  • $companyurl - The Default Website URL
  • $companyaddress - The Company Address
  • $invoiceitems - Array of invoice items

Changing/Translating Filename

The default filename for invoices is Invoice-xxx. For quotes, this is Quote-xxx. For both, xxx is the ID of the invoice or quote. It may be desirable to change the filenames the clients see or translate into other languages. Achieve this in the same way as any text within WHMCS, by using the Language Files. Look for the strings:

$_LANG['invoicefilename'] = "Invoice-";
$_LANG['quotefilename'] = "Quote-";

Reducing the Filesize of PDFs

The bulk of the file size for PDFs generated by WHMCS come from the embedded font files for UTF-8. Because the UTF-8 charset has a large range of supported characters, this means it takes up more space than say the iso-8859-1 charset. Unlike UTF-8, iso-8859-1, only supports A-Z 0-9 and other standard characters.

If no clients are using special characters in their names/addresses then UTF-8 is not required. It is then possible to reduce the filesize of PDF's by changing the font. To do that, go to Setup > General Settings > Invoices > TCPDF Font. Once there, change the selection from "Freesans" to "Helvetica".

Additional Fonts

If you use certain special characters, they may not be covered by the standard font and so here is an alternative font type that supports Czech, Russian, Arabic & persian among others. To install:

  • Download the font files from the URL below,
  • Upload into the /vendor/tecnick.com/tcpdf/fonts/ folder
  • Specify the custom font name dejavusans in Setup > General Settings > Invoices > TCPDF Font
http://www.whmcs.com/download/106/dejavusans_tcpdf_font

Troubleshooting

Accented Characters

Due to a limitation in PHP you may find the translations of the "Paid" and "Unpaid" text on the PDF Invoices do not display upper-case accented characters correctly. To resolve this please refer to http://forum.whmcs.com/showthread.php?t=45594

Question Marks

Should question marks appear in the PDF invoices and quote files in place or characters (usually non-Latin or accented characters) the first thing to try is setting the font to "Freesans" in Setup > General Settings > Invoicing.

If the problem persists after that please download and install the "dejavusans" font as described above Additional Fonts. This font pack contains many more characters than the standard ones so stands the best chance of working with these characters.